在struts下文件上传很方便,但有几个问题要注意下
1、拦截器配置要注意顺序
如果你要配置个性化的,如文件类型,大小,需要在下面增加最下面增加workflow的拦截,因为文件上传拦截器会判断文件类型与大小往validate中写错误信息,workflow会在最后判断有无错误,并转到input。
<action name="fileUpload" class="com.my.action.FileUpAction" method="post">
<result name="success" type="dispatcher">
/file_up_success.jsp
</result>
<result name="input" type="dispatcher">
/file_up.jsp
</result>
<interceptor-ref name="autowireDefault"/>
<interceptor-ref name="fileUpload">
<!-- 定义允许的上传文件的类型-->
<param name="allowedTypes">text/plain</param>
<!-- 上传文件的最大值 -->
<param name="maximumSize">1024000</param>
</interceptor-ref>
<interceptor-ref name="workflow" />
</action>
2、可以定制文件上传错误信息
有几种情况可以造成文件上传失败
1、文件过大传不上来,报actionError
2、文件类型错误,报fieldError
3、文件超过设置的大小,报fieldError
略
这些错误信息原配置是英文,可用国际化配置成中文显示
在struts.xml中增加
<constant name="struts.custom.i18n.resources" value="messageResource" />
增加
messageResource_zh_CN.properties
#文件类型出错输出 中文
struts.messages.error.content.type.not.allowed=\u6587\u4ef6\u7c7b\u578b\u51fa\u9519
java 文件转码命令
native2ascii src.txt dest.txt