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


    <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参数将不会再起效。

    生活赋予我们一种巨大的和无限高贵的礼品,这就是青春:充满着力量,充满着期待志愿,充满着求知和斗争的志向,充满着希望信心和青春。
  • 相关阅读:
    博客搬家了,新域名dinphy.wang
    Win7 SP1 32位 旗舰版 IE8 快速稳定 纯净优化 无人值守 自动激活 20170518
    Win7 SP1 64位 旗舰版 IE8 快速稳定 纯净优化 无人值守 自动激活 20180604
    红米3 TWRP-3.2.1-0(android_7.1.2_r29) 刷8.1不提示错误 刷MIUI不再卡屏 修复无系统重启问题 更新于20180316
    SudaMod-81.0 / crDroidAndroid-8.1(android-8.1.0_r20)红米3 2018年5月3日更新
    windows 10专业版14393.447 64位纯净无广告版系统 基于官方稳定版1607制作 更新于20161112
    Deepin 15.5上安装 Node.js
    在github上搭建个人博客
    Deepin 系统下安装VMware并激活
    Windows 10 Version 1803 (Updated March 2018) MSDN 镜像下载
  • 原文地址:https://www.cnblogs.com/ysq0908/p/4679000.html
Copyright © 2020-2023  润新知