zip文件 firefox : application/octet-stream
chrome : application/octet-stream
oprea : application/zip
IE : application/x-zip-compressed
rar文件 firefox : application/x-rar-compressed
chrome : application/octet-stream
oprea : application/x-rar-compressed
IE : application/octet-stream
使用Struts2上传文件,其实使用的是apache的 commons-fileupload-1.1.jar
在实际使用的过程中,使用如下配置fileUpload拦截器并不能过滤上传的文件类型,只能处理大小过滤。
- <interceptor-ref name="defaultStack"/>
- <!-- 限制文件上传大小和类型 -->
- <interceptor-ref name="fileUpload">
- <param name="maximumSize">10485760</param>
- <param name="allowedTypes">
- application/msword,application/pdf,application/zip
- </param>
- </interceptor-ref>
<interceptor-ref name="defaultStack"/>
<!-- 限制文件上传大小和类型 -->
<interceptor-ref name="fileUpload">
<param name="maximumSize">10485760</param>
<param name="allowedTypes">
application/msword,application/pdf,application/zip
</param>
</interceptor-ref>
如果不使用缺省的拦截器,则action中的属性不能正确赋值。而使用后,拦截类型不起作用。网上说缺省拦截器中已经包含了fileUpload拦截器。那么这样配置就是做了两次拦截。通过查找资料和尝试,如下配置的情况下可以实现文件类型拦截。
- <interceptor-ref name="defaultStack">
- <!-- 配置允许上传的文件类型,多个用","分隔 -->
- <param name="fileUpload.allowedTypes">
- application/msword,application/pdf,application/zip
- </param>
- <!-- 配置允许上传的文件大小,单位字节 -->
- <param name="fileUpload.maximumSize">10485760</param>
- </interceptor-ref>
<interceptor-ref name="defaultStack">
<!-- 配置允许上传的文件类型,多个用","分隔 -->
<param name="fileUpload.allowedTypes">
application/msword,application/pdf,application/zip
</param>
<!-- 配置允许上传的文件大小,单位字节 -->
<param name="fileUpload.maximumSize">10485760</param>
</interceptor-ref>