Struts2自带了文件上传拦截器方便进行文件上传,要使用这个功能,必须给使用了Struts2框架的工程添加commons.io包,然后在struts.xml里进行以下设置:
在
再添加
在需要处理上传文件的Action里配置拦截器:
2
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
10485760
/upload
fileUpload拦截器必须在defaultStack(默认)拦截器前面配置,Struts2会由上到下执行拦截器。
allowedTypes指定上传的文件类型,但类型不符只会在控制台输出警告语句,程序不会报错。
maximumSize指定上传的文件大小,但文件超出大小只会在控制台输出警告语句,程序不会报错。注意不能写成1024*1024*5的形式。
实现原理
Struts 2是通过Commons FileUpload文件上传。CommonsFileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。
具体实现前段时间Apache发布了Struts 2.0.6GA,所以本文的实现是以该版本的Struts作为框架的。以下是例子所依赖类包的列表:
首先,创建文件上传页面FileUpload.jsp,内容如下:
<%@ pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding="utf-8"%>
<%@ taglibprefix="s"uri="/struts-tags"%>