struts2中限制上传文件大小后错误信息的显示

struts2中限制上传文件大小后错误信息的显示,第1张

Struts2本身提供了一个文件上传的拦截器,通过配置该拦截器可以更轻松地实现文件过滤。我们只需要在Action中配置该拦截器就可以了。当文件过滤失败后,会自动转向input逻辑视图,因此必须为该Action配置名为input的逻辑视图,除此之外还必须为配置defaultStack的拦截器的引用。配置文件如下:

<action name="upload" class="com.annlee.upload.UploadAction" >

<!-- 配置fileUpload的拦截器 -->

<interceptor-ref name="fileUpload">

<!-- 配置允许上传的文件类型 -->

<param name="allowedTypes">image/bmp,image/gif,image/jpg</param>

<!-- 配置允许上传的文件大小 -->

<param name="maximumSize">2000000</param>

</interceptor-ref>

<interceptor-ref name="defaultStack"></interceptor-ref>

<param name="savePath">/</param>

<result>/common/succ.jsp</result>

<result name="input">/cos_fileupload/fileupload.jsp</result>

</action>

如果上传失败系统会返回到原来的页面,要在原来的页面上加上以下错误提示代码:

<s:fielderror />这样系统就会返回提示给用户,但是这时的提示是Struts2自带的提示,非常不友好,我们可以国际化资源里配置以下两项,我们的提示就会自动替换Struts2的提示,提示的关键字如下

struts.messages.error.file.too.large

struts.messages.error.content.type.not.allowed

此外,如果用户上传失败的原因不是因为以上两种还有另外的一个信息提示用户,它的关健字是:struts.messages.error.uploading,我们也应该替换这个提示信息。

其它说明:如果没有指定临时的保存文件夹,系统就会使用javax.servlet.context.tempdir路径,这个路径是Tomcat的work\Catalina\localhost\,我们应该设置自己的路径,这个配置的属性为struts.multipart.saveDir可以在struts.properties中配置,还有一个文件上传的属性:struts.multipart.maxSize设置整个表单请求内容的最大字节数。

struts.multipart.maxSize struts.multipart.maxSize 默认限制为2M;

解决方法:

在struts.xml中加入 <constant name="struts.multipart.maxSize" value="10000000"/>,大约10M

原因:maximumSize须小于 struts.multipart.maxSize,而默认值不足5M,所以修改maximumSize无效,

应先修改 struts.multipart.maxSize

即,

若 上传文件大小<maximumSize ,上传成功

若 maximumSize<上传文件大小< struts.multipart.maxSize , 若 上传文件大小 > struts.multipart.maxSize ,

Struts has detected an unhandled exception:

很简单,在Action配置中添加如下内容

<action name="" class="">

<interceptor-ref name="defaultStack">

<param name="fileUpload.maximumSize">102400</param><!--大小限制为100KB-->

</interceptor-ref>

</action>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11409855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存