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參數將不會再起效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM