Spring MVC - Comment gérer la taille de téléchargement maximale dépassée par l’exception

Spring MVC - Comment gérer l'exception de dépassement de la taille de téléchargement maximale

Au printemps, vous pouvez déclarer un@ControllerAdvice pour attraper l'exception de dépassement de la taille de téléchargement maximale laide comme ceci:

spring-file-upload-max-file-size

Solution

Dépend des types demultipartResolver:

  1. StandardServletMultipartResolver - catchMultipartException, reportez-vous àthis example.

  2. CommonsMultipartResolver - catchMaxUploadSizeExceededException - se réfère à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
Si vous avez déployé sur Tomcat et que vous ne pouvez pas détecter l'exception de dépassement de la taille du fichier, cela peut être dû au paramètre TomcatmaxSwallowSize. Lire ceci -Spring file upload and connection reset issue