Spring MVC - Как обработать исключение превышения максимального размера загрузки

Spring MVC - как обработать исключение превышения максимального размера загрузки

Весной вы можете объявить@ControllerAdvice, чтобы поймать уродливое исключение превышения максимального размера загрузки, например:

spring-file-upload-max-file-size

Решение

Зависит от типовmultipartResolver:

  1. StandardServletMultipartResolver - уловMultipartException, см.this example.

  2. 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