struts文件上傳大小限制
❶ struts2在上傳時控制文件大小時錯誤
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:(2164310)exceedstheconfiguredmaximum(2097152)
日誌顯示上傳文件大於配置文件許可的大小,所有拋出了異常。
Struts2框架底層默認用的是apache的commons-fileupload組件對上傳文件進行處理。
struts.multipart.maxSize設置的大小就是該處理時取用的值,在上傳文件之前系統會去比較文件的大小是否超過了該值,如果超過將拋出上述異常,並且commons-fileupload組件是不支持國際化的,所以我們看到的異常都是默認的。
你可以查看上傳組件的源碼,他的異常是Action級別的。
所以如果你還想用這種方法進行異常處理的話,可以這么做:
在action中直接重寫ActionSupport的addActionError()方法
判斷字元串是不是這樣的字元串。
示例代碼:
java">@Override
public void addActionError(String anErrorMessage) {
//判斷是否是文件上傳超過限制大小異常
if (anErrorMessage.startsWith("the request was rejected because its size")) {
super.addActionError("你上傳的文件大小超過允許的大小!");
} else {
//如果不是文件上傳大小異常則按原來的方法處理
super.addActionError(anErrorMessage);
}
}
頁面加上個<s:fielderror/>
ok了。
需要注意的是,原來頁面上的其他輸入信息都會消失不見。
因為此異常是在上傳前捕獲的。
❷ 文件上傳時,文件太大會有幾種被限制的情況
文件上傳時,文件大小超出限制可導致多種情況。首先,前端頁面表單輸入數據量大,包含多個文本與圖片未壓縮,最終可能因大小限制上傳失敗。整個上傳過程中,涉及的鏈路包括nginx、servlet中間件、應用框架如SpringMVC或Struts2、內部RPC訪問至資料庫。在這一過程中,可能導致上傳失敗的限制點有配置、框架設置以及特定的協議限制。
在使用nginx作為web伺服器時,`client_max_body_size`參數的設置至關重要。若未配置此參數,上傳大文件時可能會中斷在nginx請求中,導致無法記錄訪問。查看nginx配置文件(如`/usr/local/nginx/conf/nginx.conf`),確保`client_max_body_size`值調整至適合的大小,避免上傳失敗。
當使用Tomcat作為伺服器時,上傳文件大小的最大值默認為2M(2097152位元組)。通過修改`server.xml`文件中的`maxPostSize`參數,可調整此限制。
對於Jetty框架,其默認最大文件上傳大小為200k。通過修改配置文件`jetty.xml`中的`maxFormContentSize`參數,可以重新設定此限制。設置為-1表示不限制上傳大小。
在Spring Boot框架中,通過修改`application.yml`或`application.properties`文件,調整`multipart.maxFileSize`和`multipart.maxRequestSize`參數來限制文件上傳大小。對於不同版本的Spring Boot,配置細節有所變化,如從1.3版本到2.0版本,單位由Mb變為MB。
Struts2框架默認的文件上傳大小限制為2M。通過在`struts.xml`配置文件中設置上傳文件的最大值,可以調整這一限制。
在使用bbo協議的RPC框架時,其默認限制為8M,導致傳輸大數據容量的對象時可能出現異常。調整bbo協議的配置,如在`bbo.properties`中修改`bbo.protocol.bbo.payload`參數,可以增加傳輸大文件的容量限制。注意,bbo不支持文件或流傳輸。
資料庫層面也存在大小限制,如MySQL的`max_allowed_packet`變數默認配置為16M。若上傳文件大小超出此限制,將引發異常。通過修改資料庫配置文件中的`max_allowed_packet`值,可以調整最大允許數據包大小,如設置為30M,並重啟資料庫連接以使設置生效。
綜上所述,文件上傳時大小限制可能導致的限制情況包括前端數據大小、伺服器配置、框架設置及特定協議限制等。確保各環節參數配置得當,以適應不同大小的文件上傳需求。
❸ struts2中上傳文件時報404錯誤
如果說配置文件欄位名都沒有錯的話那就是說你的上傳的文件超過了4M,而fileupload默認的上傳限度為4M!如果沒有跟改配置的話那就會拋出異常!而在struts2中則是返回為input!而你又在struts.xml中沒有配置<result name = "input">/test.jsp</result>所以為出現404!如果先要根治的話!你需要在配置文件中配置一下<constant name="struts.multipart.maxSize" value="20480000"/>
value的值你可以看著設!最大限度是2G
❹ 在Java中,文件上傳時怎樣判斷並限制附件大小
你是用什麼方式上傳的? 如果是JQUERY 'onSelect': function(e, queueId, fileObj) 在這里
判斷多大fileObj.size 超過 就提示 並return false 就可以了 如果是普通上傳 可以讀到文件路徑 一樣用 File file = new File(path); file .size 判斷 如果超過 就不給上傳 並提示到頁面就可以了
struts上傳還可以在配置文件裡面做限制 struts.properties 裡面 加上這個
struts.multipart.maxSize=2097152