`

ServletFileUpload.parseRequest()得不到请求内容

阅读更多
public void upload(HttpServletRequest request, HttpServletResponse response){
		//创建解析工厂
		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setRepository(new File(this.getServletContext().getRealPath("/WEB-INF/temp")));//设置文件缓存目录
		//创建解析器
		ServletFileUpload load = new ServletFileUpload(factory);
		load.setHeaderEncoding("UTF-8");
		//解析request得到封装FileItem的list
		try{List list = load.parseRequest(request);//list.size() is 0
                       for(int i=0; i<list.size(); i++) {
				FileItem item = (FileItem)list.get(i);
				if(!item.isFormField()){
					String name = item.getName();
					if(!name.trim().equals("")){
						name = name.substring(name.lastIndexOf("\\")+1);
						//拿到inoutStream流
						InputStream inputStream = item.getInputStream();
						String path =this.getServletContext().getRealPath("/WEB-INF/upload");
						
						File file = new File(path);
						if(!file.exists())
							file.mkdirs();
						//定义输出流
						OutputStream outputStream = new FileOutputStream(path+"\\"+name);
						
						int len = 0;
						byte data[] = new byte[1024];
						while((len=inputStream.read(data))!=-1)
							outputStream.write(data, 0, len);
						inputStream.close();
						outputStream.flush();
						outputStream.close();
						item.delete();//删除临时文件
					}
				}
			}
			request.setAttribute("message","上传成功");
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("message","上传失败");
		}finally{
			try {
				request.getRequestDispatcher("/message.jsp").forward(request, response);
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
	}...

 Cauz:struts的拦截器机制RequestProccessor自己处理了文件上传, 如果是struts1,去掉formbean中的file对应属性, 如果是struts2,把

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 

里面的/*改成/*.action然后用普通的servlet代替action做上传处理,webwork同理

<filter>
	<filter-name>webwork</filter-name>
	<filter-class>
		com.opensymphony.webwork.dispatcher.FilterDispatcher
	</filter-class>
</filter>
<filter-mapping>
		<filter-name>webwork</filter-name>
		<url-pattern>*.action</url-pattern>
</filter-mapping>

 

 

分享到:
评论

相关推荐

    Apache Commons fileUpload实现文件上传

    List&lt;FileItem&gt; items = upload.parseRequest(request); Iterator&lt;FileItem&gt; itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); //检查当前项目是普通表单项目还是上传...

    java通过js上传文件

    items=upload.parseRequest (request).iterator(); while(items.hasNext()){ FileItem item=(FileItem) items.next(); if(!item.isFormField()){ String name=item.getName (); String fileName=name....

    jspsmartupload

    List fileItems = upload.parseRequest(request); //开始读取上传信息 Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件 while(iter.hasNext()) { FileItem item = (FileItem) iter.next(); // ...

    上传文件+ajax进度条

    上传文件+ajax进度条 FileItemFactory factory = new DiskFileItemFactory(); // 通过该工厂对象创建...List items = upload.parseRequest(request); for (Iterator i = items.iterator(); i.hasNext();) {

    flex中的文件上传(简单例子)

    List fileItems = upload.parseRequest(request); Iterator iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) { ...

    ognl源码包值得用一用

    List&lt;FileItem&gt; list = upload.parseRequest(request); for (FileItem item : list) { if (item.isFormField()) { String name = item.getFieldName(); String value = item.getString("GBK")...

    JSP-文件图片上传-fileupload组件-commons-upload

    try {List items = upload.parseRequest(request);Iterator itr = items.iterator(); while (itr.hasNext()) {FileItem item = (FileItem) itr.next();if (item.isFormField()) { System.out.println("表单参数名:" ...

    解决中文乱码的几种解决方法(推荐)

    1. 前台jsp中,我使用的是 form post 请求,设置了 enctype=”multipart/form-data” ,页面编码格式都是utf-8 2. 后台中,我使用的是commons-fileUpload组件,ServletFileUpload 解析form表单和文件, 3. 设置 ...

    文件上传代码

    // 得到文件上传工厂 FileItemFactory factory = new DiskFileItemFactory(); // 处理文件上传核心类 ServletFileUpload fileUpload =... List&lt;FileItem&gt; fileItemList = fileUpload.parseRequest(request);

    fileupload

    items = upload.parseRequest(request); iterator = items.listIterator(); hd = tf.newTransformerHandler(); // Set the XML handler. Transformer serializer = hd.getTransformer(); // You'll serialize ...

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    java结合jsp写的上传文件代码

    fileList = sfu.parseRequest(request); } catch (FileUploadException e) {// 处理文件尺寸过大异常 if (e instanceof SizeLimitExceededException) { out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节...

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    List fileItems = upload.parseRequest(req); // assume we know there are two files. The first file is a small // text file, the second is unknown and is written to a file on // the server Iterator ...

    Servlet上传文件

    * 目的是调用 parseRequest(request)方法 获得 FileItem 集合list , * * 5)在 FileItem 对象中 获取信息, 遍历, 判断 表单提交过来的信息 是否是 普通文本信息 另做处理 * 6) * 第一种. 用第三方 ...

    Jsp文件上传下载(工具类源码)

    fileList = sfu.parseRequest(request); } catch (FileUploadException e) {// 处理文件尺寸过大异常 if (e instanceof SizeLimitExceededException) { out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节...

    file java 上传 下载

    List parseRequest(HttpServletRequest request) 解析request对象,并把表单中的每一个输入项包装成一个fileItem 对象,并返回一个保存了所有FileItem的list集合。 setFileSizeMax(long fileSizeMax) 设置上传...

    jsp servlet和commons-fileupload.jar做的一上传公用组件

    NULL 博文链接:https://ice-cream12-21.iteye.com/blog/2222058

    Struts2之Servlet文件上传详解案例struts010

    参考博文:http://blog.csdn.net/u011638419/article/details/41642773

    severlet文件上传、下载代码

    servlet实现文件的上传和下载,使用包为: import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk....import org.apache.commons.fileupload.servlet.ServletFileUpload;

    ctosb-ueditor:百度ueditor编辑器java

    由于springmvc在接收文件时已经对请求的文件进行了一次包装解析(详见CommonsMultipartResolver类parseRequest方法中已经使用了ServletFileUpload去解析文件)配置文件名称可自定义。升级org.json为阿里的fastjson。

Global site tag (gtag.js) - Google Analytics