복붙노트

[SPRING] 봄 부팅시 HTTP POST maxPostSize 증가

SPRING

봄 부팅시 HTTP POST maxPostSize 증가

꽤 간단한 Spring Boot 웹 애플리케이션이 있는데, enctype = "multipart / form-data"형식의 단일 HTML 페이지가 있습니다. 이 오류가 발생합니다.

Spring Boot의 기본 내장 된 Tomcat 서버를 사용하고 있습니다. 분명히 기본 maxPostSize 값은 2 메가 바이트입니다. 이 값을 편집 할 방법이 있습니까? application.properties를 통해 이렇게하는 것이 가장 좋을 것입니다. 사용자 정의 된 bean을 작성하거나 xml 파일로 엉망으로 만들지 않아도됩니다.

해결법

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

    1.application.properties 파일에서 다음을 작성하십시오.

    application.properties 파일에서 다음을 작성하십시오.

    # Max file size.
    spring.http.multipart.max-file-size=1Mb
    # Max request size.
    spring.http.multipart.max-request-size=10Mb
    

    필요에 따라 크기를 조정하십시오.

    최신 정보

    참고 : Spring Boot 2에서는 이제 할 수 있습니다.

    # Max file size.
    spring.servlet.multipart.max-file-size=1MB
    # Max request size.
    spring.servlet.multipart.max-request-size=10MB
    

    부록 A. 일반적인 응용 프로그램 속성 - 스프링

  2. ==============================

    2.해결책을 찾았습니다. SpringApplication.run을 실행하는 동일한 클래스에이 코드를 추가하십시오.

    해결책을 찾았습니다. SpringApplication.run을 실행하는 동일한 클래스에이 코드를 추가하십시오.

    // Set maxPostSize of embedded tomcat server to 10 megabytes (default is 2 MB, not large enough to support file uploads > 1.5 MB)
    @Bean
    EmbeddedServletContainerCustomizer containerCustomizer() throws Exception {
        return (ConfigurableEmbeddedServletContainer container) -> {
            if (container instanceof TomcatEmbeddedServletContainerFactory) {
                TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
                tomcat.addConnectorCustomizers(
                    (connector) -> {
                        connector.setMaxPostSize(10000000); // 10 MB
                    }
                );
            }
        };
    }
    

    편집 : 분명히 당신의 application.properties 파일에 추가 또한 maxPostSize 증가하지만, 나는 그것을 확인할 수 없으므로 직접 시도하지 않았습니다.

    multipart.maxFileSize=10Mb # Max file size.
    multipart.maxRequestSize=10Mb # Max request size.
    
  3. ==============================

    3.POST 요청에서 x-www-form-urlencoded mediatype을 사용하고 있다면 (예를 들어), spring-boot의 multipart 속성이 작동하지 않습니다. spring-boot 응용 프로그램이 tomcat을 시작하는 경우 application.properties 파일에 다음 등록 정보를 설정해야합니다. # 게시물 요청의 최대 크기를 6MB로 설정 (기본값 : 2MB) server.tomcat.max-http-post-size = 6291456 나는 스프링 부트 문서에서 그 정보를 찾을 수 없었다. X-www-form-urlencoded 인코딩을 사용하는 사람에게 도움이되기를 바랍니다.

    POST 요청에서 x-www-form-urlencoded mediatype을 사용하고 있다면 (예를 들어), spring-boot의 multipart 속성이 작동하지 않습니다. spring-boot 응용 프로그램이 tomcat을 시작하는 경우 application.properties 파일에 다음 등록 정보를 설정해야합니다. # 게시물 요청의 최대 크기를 6MB로 설정 (기본값 : 2MB) server.tomcat.max-http-post-size = 6291456 나는 스프링 부트 문서에서 그 정보를 찾을 수 없었다. X-www-form-urlencoded 인코딩을 사용하는 사람에게 도움이되기를 바랍니다.

  4. ==============================

    4.문서 : https://spring.io/guides/gs/uploading-files/

    문서 : https://spring.io/guides/gs/uploading-files/

  5. ==============================

    5.먼저 spring.http 대신 spring.servlet을 사용하고 있는지 확인하십시오.

    먼저 spring.http 대신 spring.servlet을 사용하고 있는지 확인하십시오.

    ---
    spring:
      servlet:
        multipart:
          max-file-size: 10MB
          max-request-size: 10MB
    

    바람둥이를 사용해야 할 경우 EmbeddedServletContainerCustomizer를 작성하게 될 수도 있습니다. 실제로는 좋은 일이 아닙니다.

    당신이 tomat없이 살 수 있다면, 당신은 tomcat을 예를 들어로 대체 할 수 있습니다. 이 문제를 해결하고 피하십시오.

  6. ==============================

    6.application.yaml 및 application.properties에 속성을 정의 할 때 약간의 차이가 있습니다.

    application.yaml 및 application.properties에 속성을 정의 할 때 약간의 차이가 있습니다.

    application.yml에서 :

    spring:
      http:
        multipart:
          max-file-size: 256KB
          max-request-size: 256KB
    

    그리고 application.properties에서 :

    spring.http.multipart.max-file-size=128KB
    spring.http.multipart.max-request-size=128KB
    

    참고 : 스프링 버전 4.3 및 스프링 부트 1.4

  7. from https://stackoverflow.com/questions/33232849/increase-http-post-maxpostsize-in-spring-boot by cc-by-sa and MIT license