尝试在我的应用程序中配置 Struts 2 文件上传拦截器时遇到两个问题。我想更改参数 maximumSize
(默认值是 2 MB,我需要它是 5 MB)和消息资源 struts.messages.error.file.too.large
(应用程序语言环境是 pt_BR,所以消息是葡萄牙语,而不是英语)。
应用程序当前配置如下:
struts.properties
struts.locale=pt_BR
struts.custom.i18n.resources=MessageResources
struts.xml
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="login" class="br.com.probank.interceptor.LoginInterceptor"/>
<interceptor-stack name="defaultLoginStack">
<interceptor-ref name="login" />
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultLoginStack" />
...
</package>
...
<package name="proposta" namespace="/proposta" extends="default">
<action name="salvarAnexoProposta" method="salvarAnexoProposta" class="br.com.probank.action.AnexoPropostaAction">
<interceptor-ref name="defaultLoginStack">
<param name="fileUpload.maximumSize">5242880</param>
</interceptor-ref>
<result name="success">/jsp/listagemAnexosPropostaForm.jsp</result>
<result name="input">/jsp/crudAnexoPropostaForm.jsp</result>
<result name="error">/jsp/error.jsp</result>
<result name="redirect" type="redirect">${redirectLink}</result>
</action>
</package>
MessageResources.properties
...
struts.messages.error.file.too.large=O tamanho do arquivo...
我的 Action 实现和我的 JSP 代码没有什么特别之处。他们遵循发现的例子http://struts.apache.org/2.1.6/docs/file-upload-interceptor.html .当我尝试上传超过 5 MB 的文件时,应用程序会显示消息“请求被拒绝,因为其大小 (6229458) 超过了配置的最大值 (2097152)”——默认的文件上传消息具有默认的 maximumSize 值。
我试着把消息资源
struts.messages.error.file.too.large
在 struts-messages.properties 中,但此后消息没有改变。配置文件上传拦截器的正确方法是什么?我正在使用 Struts 2 2.1.7。提前致谢。
最佳答案
终于解决了整个难题! struts.xml
和 MessageResource.properties
已正确配置。问题是 struts.multipart.maxSize
值 .此值必须大于所需的上传限制(在我的应用程序中为 5242880),因此我将其设置为 10000000。如果 struts.multipart.maxSize
值等于或小于 fileUpload.maximumSize
Struts 2 用于上传的库在文件上传拦截器有机会完成其工作之前停止上传过程(并写入错误消息)。
关于file-upload - Struts 2 文件上传拦截器配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1445791/