在文件上传的时候,有可能需要对文件的大小和类型做出限制。
Struts 2支持直接在fileUpload 拦截器上设置参数来进行限制。
在引用fileUpload 拦截器的时候,可以指定3 个参数(指定<param>子元素) :
allowedTypes | 指定允许上传的文件的类型, 如果存在多种类型,以逗号隔开。注意:这里添的不是文件的扩展名, 而是对应的ContentType。 |
maximumSize | 指定允许上传的文件的最大字节数。 |
allowedExtensions | 指定允许上传的文件的扩展名。 |
如果上传的文件不满足以上的参数指定的条件,则会跳转到一个叫input的<result>上, 一般input 都会指回到提交之前的页面,也就是文件上传页面。
<packagename="default"namespace="/"extends="struts-default"> <actionname="upload"class="cn.itcast.user.action.FileUploadAction" method="upload"> <!--向FileUploadAction中传入上传文件的存放目录的参数值 --> <paramname="uploadPath">D:\</param> <!--引用fileUpload拦截器 --> <interceptor-refname="fileUpload"> <!--设置单个上传文件的大小,单位字节 --> <paramname="maximumSize">20000000</param> <!--设置单个上传文件的扩展名为jpg,多个扩展名之间通过","号分隔 --> <paramname="allowedExtensions">.jpg</param> <!--设置单个上传文件的MIME类型,多个类型之间通过","号分隔 --> <paramname="allowedTypes">image/jpeg</param> </interceptor-ref> <!--当显示声明使用某一具体拦截器时,那么默认拦截器栈中的18个拦截器就不起作用了 如果又要默认拦截器栈中的拦截器有作用的话,又需显示声明使用默认拦截器栈 --> <interceptor-refname="defaultStack"/> <resultname="input">/jsp/upload.jsp</result> <result>/jsp/success/upload_success.jsp</result> </action> </package> |