winder

DB&JAVA
posts - 2, comments - 6, trackbacks - 0, articles - 11
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

使用Struts2上传文件,其实使用的是apache的 commons-fileupload-1.1.jar

在实际使用的过程中,配置了fileUpload拦截器并不能过滤上传的文件类型,只能处理大小过滤


 

1             <interceptor-ref name="defaultStack">
2                   
<!-- 配置允许上传的文件类型,多个用","分隔 -->
3                   
<param name="fileUpload.allowedTypes">
4                     image/bmp,image/png,image/gif,image/jpeg,image/jpg ,image/x-png
5                   
</param>
6                   
<!-- 配置允许上传的文件大小,单位字节 -->
7                   
<param name="fileUpload.maximumSize">102400</param>
8             
</interceptor-ref>

 


如果不使用缺省的拦截器,则action中的属性不能正确赋值。而使用后,拦截类型不起作用。后来在网上多方查找,隐隐角色是缺省拦截器的原有。网上说缺省拦截器中已经包含了fileUpload拦截器。那么这样配置就是做了两次拦截。通过查找资料和尝试,如下配置的情况下可以实现文件类型拦截。


 

1             <interceptor-ref name="defaultStack">
2                   
<!-- 配置允许上传的文件类型,多个用","分隔 -->
3                   
<param name="fileUpload.allowedTypes">
4                     image/bmp,image/png,image/gif,image/jpeg,image/jpg ,image/x-png, image/pjpeg
5                   
</param>
6                   
<!-- 配置允许上传的文件大小,单位字节 -->
7                   
<param name="fileUpload.maximumSize">102400</param>
8             
</interceptor-ref>

 

 

 


评论

# re: Struts2 文件上传 文件类型 大小过滤 不起作用?  回复  更多评论   

2011-01-04 23:22 by King_wangyao
设置Struts2文件上传的类型和大小:

在struts.xml中的Action中配置如下:

<!-- 国际化文件 -->
<constant name="struts.custom.i18n.resources" value="message"></constant>

<action name="upload" class="com.mengya.action.UploadAction">
<result name="success">/result.jsp</result>
<!-- 若上传的文件不符合要求则返回input -->
<result name="input">/index.jsp</result>

<!-- 限制上传的文件的大小,在struts-default.xml中我们可能找到一个fileUpload拦截器 -->
<interceptor-ref name="fileUpload">
<!-- 单位为字节,这里为400k 这里的大小是指每个文件上传的大小,若多个文件上传指每一个文件的大小 -->
<param name="maximumSize">409600</param>
<!-- 指定文件上传的类型,在X:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\web.xml中Tomcat提定所有文件类型 -->
<!-- word类型 -->
<param name="allowedTypes">
application/msword
</param>
</interceptor-ref>
<!-- 加上默认拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>

在message.properties文件中加上客户化的文件上传提示
#文件上传类型不允许
struts.messages.error.content.type.not.allowed = \u4e0a\u4f20\u6587\u4ef6\u7c7b\u578b\u4e0d\u6b63\u786e\uff0c\u8bf7\u91cd\u8bd5\uff01
#文件上传的大小不允许
struts.messages.error.file.too.large = \u4e0a\u4f20\u6587\u4ef6\u592a\u5927\uff01
#这些信息可以在struts2-core-2.1.6.jar下面的struts-message.properties文件里找到

只有注册用户登录后才能发表评论。


网站导航: