在Spring中,您可以声明一个@ControllerAdvice
来捕获超出上限的丑陋的最大上传大小,如下所示:
解
取决于multipartResolver
的类型:
-
StandardServletMultipartResolver
–捕获MultipartException
,请参考此示例 。 -
CommonsMultipartResolver
–捕获MaxUploadSizeExceededException
–请参MaxUploadSizeExceededException
示例 。
GlobalExceptionHandler.java
package com.mkyong.exception;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.multipart.MultipartException;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@ControllerAdvice
public class GlobalExceptionHandler {
//StandardServletMultipartResolver
@ExceptionHandler(MultipartException.class)
public String handleError1(MultipartException e, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", e.getCause().getMessage());
return "redirect:/uploadStatus";
}
//CommonsMultipartResolver
@ExceptionHandler(MaxUploadSizeExceededException.class)
public String handleError2(MaxUploadSizeExceededException e, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", e.getCause().getMessage());
return "redirect:/uploadStatus";
}
}
Tomcat连接重置
如果您部署到Tomcat,并且无法捕获超出文件大小的异常,则可能是由TomcatmaxSwallowSize
设置引起的。 阅读此文件-Spring文件上传和连接重置问题
参考文献
翻译自: https://mkyong.com/spring/spring-mvc-how-to-handle-max-upload-size-exceeded-exception/