使用webwork的fileUpload interceptor,可以很方便的实现文件上传功能。以下为我在编写文件上传功能实现中的一些总结:
一:基本配置
开发环境:
服务器:tomcat 5.X
webwork版本:webwork 2.2.2
1:webwork.properties配置
- webwork.multipart.parser=jakarta#文件解析器类型,备选项包括pell、cos、jakarta
- webwork.multipart.saveDir=someDir #临时文件保存路径,最好设置否则会在服务器运行日志中看到很多INFO提醒
-
webwork.multipart.maxSize=61000#上传文件的大小上限,单位:byte
2:xwork.xml
<action name="upload" class="uploadAction">
<result name="success">ok.jsp</result>
<result name="error">err.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">512000</param>
<param name="allowedTypes">image/pjpeg,image/gif,image/bmp,image/jpeg</param>
</interceptor-ref>
</action>
3:upload.jsp
-
<formname="postForm"method="post"enctype="multipart/form-data"action="upload.action">
-
<inputtype="file"name="doc"/>
-
</form>
4:uploadAction.java
public class Upload Action extends ActionSupport {
private Filedoc;//上传保存的临时文件的引用,命名和upload.jsp中doc保持一致
private StringdocContentType;//文件类型,该字段命名=文件引用名+"ContentType"
private StringdocFileName;//文件名,文件名=文件引用名+FileName
public String execute() {
if (doc==null) {//当取道的文件引用为null时,表示文件不符合你设定的条件
returnERROR;
}
//以下为服务器文件传存、重命名等操作,临时文件不用管,fileUploadinterceptor会自己处理善后工作。。。
}
//setters方法省略
}
二:上传代码流程说明及注意事项
1)程序走到fileUploadinterceptor之前已经对文件在服务器端进行了保存
2)fileUploadinterceptor必须在paramsinterceptor之前被调用,否则Action无法获取到文件的引用
3)如果能在客户端进行文件名后缀和大小的判断,需要尽量做完善。尽管大小判断的js在ie下才起作用,并且js可以被轻松绕过,也需要这样做,因为http文件传输是很消耗服务器CPU的
4)当文件大小和类型不符合fileUploadinterceptor设置时,action仍旧会执行,此时得到的文件引用为null
5)可以通过getFieldErrors()方法获取fileUpload对于文件拦截操作出来结果,虽然提示信息不是很明确,而且是英文,但至少可以从中分析出是什么原因造成的不能上传
三:参考
WebWork2文档中文化计划 http://wiki.javascud.org/display/ww2cndoc/File+Upload+Interceptor
apache commons FileUpload组件网址 http://commons.apache.org/fileupload/
webwork fileUpload intercrptor英文介绍 http://docs.huihoo.com/webwork/2.2.6/File%20Upload%20Interceptor.html
分享到:
相关推荐
在本文中,我们将深入探讨如何使用WebWork和iBatis框架来实现文件上传的功能。WebWork是一个基于Action的MVC(Model-View-Controller)框架,而iBatis则是一个SQL映射框架,用于简化Java应用程序中的数据库操作。...
7. **其他的依赖JAR包**:如log4j.jar(日志记录)、commons-lang.jar(通用语言工具)、commons-fileupload.jar(文件上传)等,这些是WebWork或其依赖库的辅助组件。 安装和使用WebWork所需JAR包的过程通常涉及...
在Struts2中,要实现文件上传功能,开发者需要配置Action类来接收文件,设置相应的文件字段,并使用Commons FileUpload进行解析。Struts2的拦截器(Interceptor)会处理请求,通过FileUpload解析文件内容,然后将...
WebWork是一个基于Java的...以上就是WebWork框架中实现文件上传和下载的基本步骤,以及可能遇到的问题及其解决策略。在实际开发中,还需要注意文件安全、文件大小限制、多文件上传等问题,以确保应用的稳定性和安全性。
### Struts2 多文件上传实现详解 在Web开发中,文件上传是一项常见的功能需求,尤其是在需要用户批量上传文件的应用场景下。Struts2作为一款成熟的Java Web框架,提供了便捷的方式来处理多文件上传的需求。本文将...
这些文件包含了多个经典Java开发工具和框架的源代码,对于深入理解它们的工作原理以及学习如何构建高效、可扩展的应用程序非常有帮助。以下是对每个工具和框架的详细说明: 1. **DOM4J**: DOM4J是一个灵活的Java ...
在这个项目中,开发者使用Struts2实现了一系列功能,包括用户登录注册、服务器端数据验证、文件上传与下载以及一个简单的留言讨论区和分页显示。以下将对这些知识点进行详细阐述。 1. **Struts2框架**:Struts2是...
8. **Javad的Struts2基本配置.txt**:这个文件很可能是关于Struts2框架的基本配置指南,可能包含配置XML文件(如struts.xml或struts-default.xml)的示例,这些文件定义了Action、Interceptor和Result的配置。...
以下将从Struts2的基本概念、MVC设计模式、Struts2在MVC中的实现、Struts2配置以及相关环境搭建等方面进行详细介绍。 ### 一、Struts2框架简介 #### 1. Struts2概述 Struts2是一个基于Java的开源Web应用框架,它是...
- `commons-fileupload-1.2.1.jar`: 文件上传支持。 4. **配置过滤器**:编辑`/Webroot/WEB-INF/web.xml`文件,添加Struts2的过滤器配置。 ```xml <filter-name>struts2</filter-name> <filter-class>org....
- **添加jar包**:需要引入文件上传相关的jar包,如`commons-fileupload`和`commons-io`。 - **设置form表单**:表单需要使用`enctype="multipart/form-data"`属性。 - **在Action中接收**:定义一个`File`类型的...
Struts2支持文件上传和下载功能,利用`commons-fileupload-1.2.1.jar`组件,可以方便地处理用户的文件提交操作。 5. **Struts2深入探索**: 进阶使用Struts2时,可以研究其插件机制、自定义拦截器、国际化支持...
7. **Commons FileUpload**:commons-fileupload.jar - 支持上传文件的功能,使用户能够通过表单提交大文件。 8. **Commons IO**:commons-io.jar - 提供了一系列的I/O实用工具,用于处理文件操作、流处理等。 9. ...
Struts2需要一个名为`struts.xml`的配置文件来指定Action和其他配置信息。该文件通常放置在应用类路径(`/WEB-INF/classes`)中。 ```xml <package name="default" namespace="/" extends="struts-default"> ...
- **Commons-fileupload-1.2.1.jar**: 文件上传的支持库,用于处理HTTP请求中的文件上传。 **2. Eclipse配置** 对于Eclipse IDE而言,如果没有MyEclipse提供的Web支持,需要额外安装或配置commons-fileupload等...
6. **依赖的第三方库**:如commons-fileupload.jar用于处理文件上传,commons-lang3.jar提供Java语言工具类,还有其他的如xwork-core.jar,log4j.jar,javassist.jar等,它们为Struts2提供了额外的功能和支持。...
- Commons FileUpload和Commons IO:文件上传组件及其依赖库 通过上述的介绍,我们可以了解到Struts2作为一个成熟的MVC框架,它在Java web开发中起到了重要的作用,通过合理的配置和使用,可以极大地提高开发效率和...