struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题...

本文深入解析Struts2框架中用于限制文件上传大小、类型和后缀名的文件上传拦截器配置。通过实例演示如何调整`maximumSize`、`allowedTypes`和`allowedExtensions`参数,以实现对上传文件的有效控制,并解决常见错误。重点讨论了`struts.multipart.maxSize`的作用以及其与拦截器参数之间的关系,提供解决文件上传大小限制问题的方法。

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

<interceptor-ref name="fileUpload">           

     <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param>             

    <!-- 图片不能大于5M -->       

    <param name="maximumSize">5242880</param> </interceptor-ref>

 

<package name="upload2" extends="struts-default">  

       <action name="upload2" class="com.ljq.action.UploadAction2" method="execute">  

                   <interceptor-ref name="fileUpload">    

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

                          <param name="allowedExtensions">png,jpg,xml,txt</param

                          <!-- 文件大小, 以字节为单位 -->  

                           <param name="maximumSize">10259560</param></pre

                  </interceptor-ref<!-- 默认拦截器必须放在fileUpload之后,否则无效 --> 

                   <interceptor-ref name="defaultStack" /> 

            <result name="success">/WEB-INF/page/message.jsp</result>  

            <result name="input">/upload/upload.jsp</result>  

       </action

</package

文件上传的拦截器中的三个参数

maximumSize------>限制上传文件的最大size,默认的是2M   注意:这里的2M指的是struts.multipart.maxSize的值,而并非是maximumSize

allowedTypes ------>对上传的文件过滤,即设置文件的类型

allowedExtensions-->也是对文件的过滤,设置文件的后缀名

问题:

1,当设置文件的不能大于5M,但是上传2M以上的图片直接出错跳转input;

 

解决办法:

<!-- 整个项目所上传文件的最大的Size --> <constant name="struts.multipart.maxSize" value="9000000"/>;

a.struts.multipart.maxSize掌控整个项目所上传文件的最大的Size。超过了这个size,后台报错,程序处理不了如此大的文件。fielderror里面会有如下的提示: the request was rejected because its size (16272982) exceeds the configured maximum (9000000)

b.fileUpload拦截器的maximumSize属性必须小于struts.multipart.maxSize的值struts.multipart.maxSize默认2M当maximumSize大于2M时,必须设置struts.multipart.maxSize的值大于maximumSize。<!—这一条最重要,很容易忽略—>

注意:在使用constant设置文件上传的大小时,value不能使用如10M写成1024*1024*10,这样是不允许的,但在拦截器中可以这样写

c.当上传的文件大于struts.multipart.maxSize时,系统报错    当上传的文件在struts.multipart.maxSize和maximumSize之间时,系统提示上传成功!

问题:

 

 2,在对文件进行过滤时,出现设置文件的类型后,设置了文件的后缀名,后者设置无效

 

解决办法:

      使用”文件类型“和”文件后缀名“两者中的一个来控制上传文件的类型/后缀名。但是,allowedTypes的优先级别高于allowedExtensions,

如果配置了allowedTypes则allowedExtensions将不再起效

      利用allowedExtensions参数来控制上传文件的后缀名,则不能配置allowedTypes参数。

否则,如果allowedTypes参数有配置,那么allowedExtensions参数将不会再起效。

转载于:https://www.cnblogs.com/ysq0908/p/4679000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值