Spring MVC - как обработать исключение превышения максимального размера загрузки
Весной вы можете объявить@ControllerAdvice
, чтобы поймать уродливое исключение превышения максимального размера загрузки, например:
Решение
Зависит от типовmultipartResolver
:
-
StandardServletMultipartResolver
- уловMultipartException
, см.this example. -
CommonsMultipartResolver
- уловMaxUploadSizeExceededException
- см.this example.
GlobalExceptionHandler.java
package com.example.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 Connection Reset
Если вы развернули систему на Tomcat и не смогли обнаружить исключение превышения размера файла, это может быть вызвано настройкой TomcatmaxSwallowSize
. Прочтите это -Spring file
upload and connection reset issue