`

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>

 

 

分享到:
评论

相关推荐

    java 页面上有ENCTYPE="multipart/form-data" 时action方法或者控制层用request.getParameter()获取不到值的方法 ?

    然后,创建一个`ServletFileUpload`实例,并使用`parseRequest()`方法解析请求。这个方法会返回一个`FileItemIterator`,你可以遍历它来获取所有表单字段,包括文件和文本字段。 ```java import org.apache....

    实用commons-fileUpload组件上传文件

    然后,你可以通过调用`ServletFileUpload.parseRequest()`方法解析请求,得到`FileItem`的集合。遍历这个集合,对于每个`FileItem`,如果它是文件,你可以通过`isFormField()`方法检查,然后使用`write()`方法将其...

    commons-fileupload上传实现

    5. **解析请求**:调用`ServletFileUpload.parseRequest(request)`方法解析HTTP请求,返回一个`FileItemIterator`,你可以迭代其中的`FileItem`对象。 6. **处理FileItems**:每个`FileItem`代表表单的一个字段。...

    java文件上传commons-fileupload-1.2

    如果是,可以调用`ServletFileUpload.parseRequest(request)`来解析请求,并得到一个`FileItemIterator`。 4. **处理文件项**:迭代`FileItemIterator`,对于每个`FileItemStream`,检查`isFormField()`方法返回值...

    commons-fileupload-1.3.jar和commons-io-1.2.jar.zip

    - 处理文件:通过`ServletFileUpload.parseRequest`解析请求,获取`FileItem`对象,然后可以读取文件内容、保存到服务器等。 **Apache Commons IO** 是另一个广泛使用的Java库,它提供了一系列与输入/输出相关的...

    java网页上传文件包commons-fileupload.jar

    4. **解析请求**: 调用`ServletFileUpload.parseRequest()`方法解析请求,返回一个`FileItemIterator`。 5. **处理FileItems**: 遍历`FileItemIterator`,对每个`FileItem`进行处理。如果是文件,可以保存到服务器;...

    文件上传的io和fileupload的jar包

    3. 解析请求:调用`ServletFileUpload.parseRequest`方法,解析请求中的多部分数据。 4. 处理文件:遍历解析结果,每个元素都是一个`FileItem`对象,如果是普通表单字段则读取其值,如果是文件则保存到服务器。 5....

    利用commons-fileupload上传组件上传文件(一)

    4. **处理上传**:使用`ServletFileUpload.parseRequest(request)`方法解析请求中的所有Part。每个Part可以是一个普通表单字段或上传的文件。 ```java List&lt;FileItem&gt; items = upload.parseRequest(request); for ...

    文件上传的架包

    3. 检查请求是否为multipart/form-data类型,如果是,则调用`ServletFileUpload.parseRequest()`方法解析请求。 4. `parseRequest()`返回一个`FileItem`的集合,遍历集合,处理每个`FileItem`。如果是普通表单字段,...

    fileupload资源包

    3. 解析Servlet请求,调用`ServletFileUpload.parseRequest()`方法,得到`FileItem`列表。 4. 遍历`FileItem`列表,处理每个上传的文件或表单字段。对于文件,通常会将其保存到服务器的指定位置。 在实际开发中,...

    java文件上传--fileupload

    然后,我们可以通过调用`ServletFileUpload.parseRequest(request)`来解析请求,这将返回一个`FileItemIterator`,我们可以遍历这个迭代器来获取每个上传的文件: ```java FileItemIterator iter = upload....

    JavaWEB文件上传需要的jar包

    3. **解析请求**:调用`ServletFileUpload.parseRequest(request)`来解析`HttpServletRequest`,返回一个`FileItemIterator`,其中包含了上传文件的信息。 4. **处理每个文件项**:遍历`FileItemIterator`,对每个`...

    java文件上传demo

    List&lt;FileItem&gt; items = upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { String fileName = item.getName(); // 检查文件类型、大小等 // ... File uploadedFile ...

    文件上传用到的jar包

    4. **解析请求**:调用`ServletFileUpload.parseRequest()`解析请求,获取`FileItem`对象列表。 5. **处理每个FileItem**:遍历`FileItem`列表,对于文件类型的`FileItem`,保存到服务器;对于普通字段,处理其内容...

    java_fileload

    在Servlet的`doPost`方法中,通过`ServletFileUpload.parseRequest(request)`来解析请求,得到一个`FileItem`列表。遍历这个列表,对每个`FileItem`,如果是普通表单字段则调用`getString()`获取值,如果是文件则...

    文件上传所需要的工具包(Apache 公司)

    3. 解析请求:使用`ServletFileUpload.parseRequest()`方法解析HTTP请求,这会返回一个`FileItemIterator`,可以通过迭代器遍历所有上传的文件和表单字段。 4. 处理文件:对于每个`FileItem`,检查它是否是普通表单...

    fileupload的使用API和代码实例.zip

    在IT行业中,文件上传是网页应用中不可或缺的功能之一,它允许用户将本地文件发送到服务器进行存储或处理。Apache Commons FileUpload库是一个广泛使用的Java库,用于处理HTTP请求中的多部分数据,即文件上传。本篇...

    commons-fileupload-1.3.3-bin

    2. 使用`ServletFileUpload.parseRequest()`方法解析HTTP请求,获取`FileItemIterator`。 3. 遍历`FileItemIterator`,处理每个`FileItem`对象,将其保存到服务器或执行其他操作。 总的来说,Apache Commons ...

    commons-fileupload实现jsp上传实例(源码).rar

    4. **解析文件项**:通过调用`ServletFileUpload.parseRequest()`,我们可以获取一个`List&lt;FileItem&gt;`,其中每个`FileItem`代表上传的一个部分,可能是文件或普通表单字段。 5. **处理文件**:对于`FileItem`对象,...

    文件上传fileupload

    List&lt;FileItem&gt; items = upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { String fileName = item.getName(); // 处理文件,如保存到服务器 } } } catch ...

Global site tag (gtag.js) - Google Analytics