关于Struts2上传文件的最大Size的设置

本文介绍了Struts2中文件上传的配置方法,包括struts.multipart.maxSize与fileUpload拦截器的maximumSize属性的区别及作用范围。通过实例解析了如何避免上传过程中因文件大小超出限制而引发的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天使用Struts2的文件上传控件时,在struts.xml中,将处理上传的action中的fileUpload拦截器的maximumSize参数设置为5000000,上传了一个3M的文件后发现控制台报错,而且提示说文件超过2M。Struts.xml相关配置如下:

 <action name="FileUpload" class="cn.timefly.strutsTest.FileUploadAction">
    <result name="success">/FileUploadResult.jsp</result>
    <result name="input">/FileUpload.jsp</result>
    <interceptor-ref name="fileUpload">
      <param name="maximumSize">500000</param> 
      <param name="allowedTypes">application/vnd.ms-powerpoint</param>     
    </interceptor-ref>
<interceptor-ref name="defaultStack" /> 
    </action>


后来尝试在struts.xml中加入 <constant name="struts.multipart.maxSize" value="9000000"/>
发现一切正常了,不报错了。功能也正常了。
发现struts.multipart.maxSize和fileUpload拦截器的maximumSize属性分工不同,总结如下:
1.struts.multipart.maxSize掌控整个项目所上传文件的最大的Size。超过了这个size,后台报错,程序处理不了如此大的文件。fielderror里面会有如下的提示:
the request was rejected because its size (16272982) exceeds the configured maximum (9000000)
2.fileUpload拦截器的maximumSize属性必须小于struts.multipart.maxSize的值。
struts.multipart.maxSize默认2M,当maximumSize大于2M时,必须设置struts.multipart.maxSize的值大于maximumSize。
3.当上传的文件大于struts.multipart.maxSize时,系统报错
当上传的文件在struts.multipart.maxSize和maximumSize之间时,系统提示:
File too large: file "MSF的概念.ppt" "upload__5133e516_129ce85285f__7ffa_00000005.tmp" 6007104 
当上传的文件小于maximumSize,上传成功。

自己补充:

Struts2全局设置上传文件大小(批量上传则表示所有的文件总大小限制)

 <!-- 配置全局文件上传的大小限制 (2G,批量上传时表示总大小,) 默认2M-->
 <!-- 大小限制交给拦截器 fileUpload管理,此处为了不报错设置大一些 -->
 <constant name="struts.multipart.maxSize" value="2147483648" />

 使用拦截器设置单次上传请求的文件大小(批量上传时表示单个文件大小限制)

<interceptor-ref name="fileUpload">
    <!-- 配置允许上传的文件类型 -->
    <param name="allowedTypes">image/jpeg,image/x-ms-bmp,image/png,image/pjpeg,video/mp4,audio/mp3,audio/mpeg,audio/x-m4a</param>
    <!-- 配置允许上传的文件大小(50M,单个文件) -->
    <param name="maximumSize">52428800</param>
   </interceptor-ref>

 

转载于:https://my.oschina.net/iyinghui/blog/541296

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值