복붙노트

[SPRING] 두 개의 컨트롤러는 Spring Boot에서 최대 파일 크기가 다릅니다.

SPRING

두 개의 컨트롤러는 Spring Boot에서 최대 파일 크기가 다릅니다.

Servlet 3.0 사양에서는 두 개의 서블릿이 서로 다른 최대 파일 크기를 가지며 잘 작동합니다.

@WebServlet(urlPatterns = { "/ureupload1" })
// 10MB
@MultipartConfig(maxFileSize = 1024 * 1024 * 10)
public class UploadServlet1 extends HttpServlet {

@WebServlet(urlPatterns = { "/ureupload2" })
// 30MB
@MultipartConfig(maxFileSize = 1024 * 1024 * 30)
public class UploadServlet2 extends HttpServlet {

스프링 부트 컨트롤러를 사용하는 경우 @MultipartConfig가 작동하지 않는 것 같습니다.

@Controller
@MultipartConfig(maxFileSize = 1024 * 1024 * 10)
public class UploadController1 {

    @RequestMapping(value = "/upload1", method = RequestMethod.POST, consumes = "multipart/form-data")
    public ModelAndView doPost(@RequestParam("file") MultipartFile file,

최대 파일 크기가 다른 두 개의 컨트롤러를 어떻게 만듭니 까?

편집하다:

추가 정보 : 기본 최대 파일 크기를 설정하기 위해 다음 특성이 application.properties에 있습니다.

spring.http.multipart.max-file-size=30MB

참고 사항 : SpringBoot의 @MultipartConfig maxFileSize가 적용되지 않습니다.

해결법

  1. ==============================

    1.application.properties 파일에 기본 구성을 설정해야합니다.

    application.properties 파일에 기본 구성을 설정해야합니다.

    spring.http.multipart.max-file-size=30MB
    spring.http.multipart.max-request-size=30MB
    

    그리고 컨트롤러에서 파일 크기에 따라 MaxUploadSizeExceededException 예외를 throw해야합니다.

    long  limit = 1024 * 1024 * 10; 
    if (file.getSize() > limit) {
        throw new MaxUploadSizeExceededException(limit);
    }
    
  2. from https://stackoverflow.com/questions/45639042/two-controllers-have-different-max-file-size-in-spring-boot by cc-by-sa and MIT license