项目是ssh的,有个功能是文件上传,文件上传以前也做过,不过很久了,记忆模糊了。。。。嘿嘿,自己给自己找理由,跑题啦!
上传功能对应的action配置fileUpload拦截器,而我又习惯性的加入了common-fileupload.jar,想用它来实现文件上传,AttachUpLoadAction代码片段如下
request = ServletActionContext.getRequest();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
DiskFileItemFactory factory = new DiskFileItemFactory();
// 当文件大小超过300k时,就在磁盘上建立临时文件
factory.setSizeThreshold(300000);
//设计文件上传的临时目录
factory.setRepository(new File("D:\\temp"));
ServletFileUpload upload = new ServletFileUpload(factory);
// 文件大小不能超过10M
upload.setSizeMax(10000000);
// Parse the request
List items = upload.parseRequest(request);
// upload.setProgressListener(new ProgressListener());
System.out.println("#####################items.size()=="+items.size());
开始不知道为什么,items.size()一直为0,而通过request.getParameter("meetingId")取得一个text类型的input框参数,则可以取到,而boolean isMultipart = ServletFileUpload.isMultipartContent(request);
返回的也是true,为什么size还是0呢?
在查阅了webwork api中关于FileUploadInterceptor的部分内容以及http://commons.apache.org/fileupload/faq.html内容后,问题解决了,是这么说的。
This most commonly happens when the request has already been parsed, or processed in some other way. Since the input stream has aleady been consumed by that earlier process, it is no longer available for parsing by Commons FileUpload.
Struts recognises multipart requests, and parses them automatically, presenting the request parameters to your code in the same manner as if they were regular request parameters. Since Struts has already processed the request, and made it available in your form bean, the input stream is no longer available for parsing, so attempting to do so with FileUpload will fail.
Struts parses multipart a request as a part of the process of populating your form bean from that request. If, for some reason, you need to have full control over the multipart parsing, you can do so by configuring your action mapping without an associated form bean. (A better way of doing this, however, is to replace the default multipart handler with your own. See the Struts documentation for details.)
针对第一个问题的解释,可我还是有点疑问,虽说webwork2通过对request等对象进行了解耦,可以不依赖容器进行测试,但是我们知道action中也是可以通过request = ServletActionContext.getRequest();取得request 等对象,直接进行操作的吗?为什么request.getParameter("meetingId")可以得到元素,而 List items = upload.parseRequest(request)不行呢?高人来解释啊( 这段话我说的有点乱,表达能力太差啦)
分享到:
相关推荐
在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...
WebWork是一个基于Java的轻量级MVC框架,它提供了处理多文件上传的能力。本篇文章将深入探讨如何在WebWork框架下实现多文件上传,并结合实际案例进行解析。 首先,了解WebWork框架的基本原理是必要的。WebWork通过...
在这个“WebWork 文件上传 多个文件上传 范例”中,我们将深入探讨如何使用WebWork实现多文件上传的功能。 首先,了解文件上传的基本原理是必要的。在HTTP协议中,文件上传通常通过POST请求实现,其中包含了...
在本教程中,我们将探讨如何利用WebWork实现文件上传功能,特别是针对Excel文件的处理。 首先,理解WebWork的MVC模式至关重要。在WebWork框架中,控制器负责接收用户请求,调用业务逻辑,并将结果传递给视图进行...
WebWork提供了丰富的特性,如类型转换、验证、国际化、文件上传和下载等,这些功能使得开发者可以更高效地构建高质量的应用程序。 #### 二、文件上传基础知识 文件上传是Web应用程序中的常见需求之一。在WebWork中...
"fileupload+dwr2+webwork2实现带进度条上传文件"这个主题涉及到三个关键技术和组件:FileUpload、Direct Web Remoting (DWR) 和 WebWork2,它们协同工作以提供一个带有进度条的高效、用户友好的文件上传体验。...
以下是一个简单的WebWork文件上传示例: ```java import org.apache.struts.upload.FormFile; ... public class UploadAction extends ActionSupport { private FormFile file; public String execute() { if ...
2. **文件上传**:在WebWork中,通常会使用Apache的Commons FileUpload库来处理文件上传。该库解析请求中的多部分数据,并将每个部分作为`Part`对象处理。你需要创建一个Action来接收并处理这些文件,将其保存到...
在本文中,我们将深入探讨如何使用WebWork和iBatis框架来实现文件上传的功能。WebWork是一个基于Action的MVC(Model-View-Controller)框架,而iBatis则是一个SQL映射框架,用于简化Java应用程序中的数据库操作。...
Webwork2是一个基于Java的MVC(模型-视图-控制器)框架...学习Webwork2可以帮助开发者更好地理解和掌握MVC架构,以及拦截器、配置文件等核心概念,这些知识对于使用其他Java Web框架如Spring MVC或Struts2也是有益的。
在提供的文件列表中,我们看到有多个以".mht"结尾的文件,这是MHT(MHTML)文件,是一种单个文件中存储网页内容的格式,可能包含了关于WebWork文件上传和下载的讨论或者示例代码。例如,"webwork 文件下载 - New - ...
本文将深入探讨WebWork2.2.7中的简单文件上传功能,这在现代Web应用中是必不可少的,允许用户上传图片、文档等各种类型的数据。 在Web开发中,文件上传通常涉及到表单提交和服务器端的处理。WebWork2.2.7支持使用...
本文主要从三个方面给大家介绍webwork文件上传下载知识,包括以下三个方面: 1. 包装 Request 请求 2. 获取文件上传的解析类 3. 项目实战配置和使用 Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大...
webwork上传文件pdf文件说明文档
然后,我们利用WebWork的Action来处理文件上传。在Action类中,可以定义一个字段来接收上传的文件,例如`private File uploadedFile; private String uploadedFileContentType; private String uploadedFileFileName...
2. **解压文件**:解压后的目录包含必要的文件和目录,例如`webwork-2.x.jar`(主库文件)、`webwork-example.war`(示例应用)、`docs`(文档)、`lib`(依赖库)等。 3. **部署至Web容器**:将下载的WebWork部署到...
在本文中,我们将深入探讨如何使用WebWork框架来实现一个简单的图片上传功能,并在网页上显示上传的图片。WebWork是Java Web开发中...理解WebWork的工作机制和文件上传的基本流程,对于开发复杂的Web应用程序至关重要。
**一、WebWork文件上传** 1. **前端页面**:在HTML页面中,我们需要一个`<input type="file">`标签让用户选择要上传的文件。例如: ```html ``` 注意`enctype="multipart/form-data"`,这是上传文件时...
在这个教程中,我们将探讨如何在WebWork 2.2.7的Action中利用Apache Commons FileUpload库来实现文件上传功能,并处理文件流。Apache Commons FileUpload是一个强大的库,专门用于处理HTTP请求中的多部分/表单数据,...