使用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
分享到:
相关推荐
fileupload+dwr2+webwork2实现带进度条上传文件
用于集成WebWork2.1和Spring的一个jar文件,编译级别jdk1.4, 已测试过,可以整合
关键是正对最新版webwork,在action中进行操作,说得很细致,有源代码实例。也将异常情况处理列出来了。
webWork 详细的说明文档, 由于我的上传大小有限, 这个好东西我只能是分两次上传了, 下载的人可能要辛苦一些了, 不过这些都是值得的, 将<<WebWork docs 2 -- webWork 详细的说明文档>> 也一同下载下来, 下载后两个...
WebWork教程-0.90版
WebWork教程-0.90版.pdf WebWork教程-0.90版.pdf
WebWork教程-表达式与言EL和OGNL- babydavic(王汉祥)的专栏- CSDNBlog.zipWebWork教程-表达式与言EL和OGNL- babydavic(王汉祥)的专栏- CSDNBlog.zip
WebWork-2.1.7 中文开发文档-小白
webwork-2.1.6.jar
与下载的<<WebWork docs -- webWork 详细的说明文档>> 的文件夹合并. 这里包括了所有webWork的所有的详细说明文档, 任何有关的问题都可以在这里找到答案.
webwork中上传文件,webwork文件上传.doc
webwork-2.1.jar webwork相关jar包
WEB2.0相关技术,深入浅出Struts2,Webwork2开发指南,DWR中文文档
webwork-reference-2.2.2.pdf
描述: webwork-2.1.7.jar 修改: package com.opensymphony.webwork.interceptor.FileUploadInterceptor 类line88 to line 93 修复bug:upload empty file cause nullponit exception 博文链接:...
webwork-tags-API 所有的标签说明 并带有说明的例子
Spring + hibernate + webwork + freemarker 整合配置