1. 在yml中配置上傳大小的限制,如下:
spring: servlet: multipart: max-file-size: 512000 # 文件上傳大小限制為500kb max-request-size: 512000 # 請求大小限制為500kb
2. 配置全局異常捕獲:
@RestControllerAdvice public class CustomExceptionHandler { // 上傳文件超過500k,捕獲異常:MaxUploadSizeExceededException @ExceptionHandler(MaxUploadSizeExceededException.class) public IMOOCJSONResult handlerMaxUploadFile(MaxUploadSizeExceededException ex) { return IMOOCJSONResult.errorMsg("文件上傳大小不能超過500k,請壓縮圖片或者降低圖片質量再上傳!"); } }
3. 測試結果:
<1>. 小於500KB的,沒問題可以上傳成功;
<2>. 大於500KB的,但是小於2M的,會被攔截,測試成功;
<3>. 大於2M的文件,上傳直接沒有反應,服務器沒有報錯沒有響應,很郁悶。這個時候測試失敗
3.3 的解決方案,這問題主要由於tomcat的的文件大小限制,超過了默認的開銷大小,就直接取消這個用戶請求了,限制了你的訪問,這沒毛病,只不過沒有任何的提示(因為服務器默認你的請求是惡意請求,就直接中斷了,不給你回應,這本質是好意~),如果需要提示,則需要再次在yml中新增一個配置項,如下設置-1或者100MB即可
server: tomcat: max-swallow-size: -1 # tomcat默認大小2M,超過2M的文件不會被捕獲,需要調整此處大小為100MB或者-1即可