我遇到了Struts 2及其文件上傳攔截器的問題。它已驗證我的內容類型和我的文件大小,但上傳過程不會停止。 比如我上傳限制爲2Mb和用戶發送帶有500MB的文件時,攔截器Struts 2的日誌文件過大,而是繼續上傳文件Struts2上傳文件,在發送文件之前驗證大小和內容類型文件
我想停止上傳過程,在錯誤的情況下,怎麼一回事,因爲在僅當發送文件完成時,struts2才返回到我的頁面。
感謝
我遇到了Struts 2及其文件上傳攔截器的問題。它已驗證我的內容類型和我的文件大小,但上傳過程不會停止。 比如我上傳限制爲2Mb和用戶發送帶有500MB的文件時,攔截器Struts 2的日誌文件過大,而是繼續上傳文件Struts2上傳文件,在發送文件之前驗證大小和內容類型文件
我想停止上傳過程,在錯誤的情況下,怎麼一回事,因爲在僅當發送文件完成時,struts2才返回到我的頁面。
感謝
你在Struts中不能 - 從Struts沒有,直到你的servlet容器處理完它得到的迴應對象的保持。
但是 - 大多數容器都有控制上傳文件大小的方法,對於tomcat,這是maxPostSize參數(默認值是2GB) - 據我所知,tomcat會計算傳入字節數,然後退出if這個值被超過。即Tomcat將不會繼續讀取maxPostSize。其他容器將具有相似的配置參數。我從來沒有用過它,所以我不能在這裏得到任何進一步的幫助。
如果您有嵌套容器/發球(例如Tomcat的坐在後面的Apache Web服務器),請確保您配置正確的
Hi @ user497087謝謝,真的,我不能攔截請求,直到它被處理。我在前面使用帶有Apache的Jetty。我將看看如何配置Jetty。 –
可以。嘗試這個。它的工作原理..
<action name="uploadDocs" class="com.test.myapp.UploadAction" method="upload">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param> <!-- Max 2 MB limit per file-->
<param name="allowedTypes">image/jpeg,image/bmp</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait"/>
<param name="delay">1000</param>
<result name="wait">wait.jsp</result> <!-- display custom please wait page -->
<result name="success">cmresulttemp.jsp</result>
<result name="input">attachfiles.jsp</result>
<result name="error">attachfiles.jsp</result>
</action>
如果要限制總上傳的內容大小(而不是每個文件)在你的struts.xml文件的頂部添加此
<constant name="struts.multipart.maxSize" value="10485760" /> <!-- Total 10 MB-->
該解決方案不會停止上傳。 –
按我的理解,服務器可以驗證它之後沒有上傳文件。 –
我不認爲你可以像服務器處理實際的物理上載一樣 - 標準的Http MultiPart表單處理,並且Struts在請求完成之前不能控制請求。您可以通過您的servlet容器/互聯網服務器來做些什麼 – user497087