programing

SpringBoot의 @MultipartConfig maxFileSize가 활성화되지 않음

megabox 2023. 3. 25. 11:00
반응형

SpringBoot의 @MultipartConfig maxFileSize가 활성화되지 않음

컨트롤러가 탑재되어 있습니다.MultipartConfig( 아아아아아아아 )

@RestController
@RequestMapping("packages")
@MultipartConfig(maxFileSize = 1024*1024*1024, maxRequestSize = 1024*1024*1024)
public class PackagesController
{
    @RequestMapping(method = RequestMethod.POST)
    public String create(@RequestParam("package") MultipartFile uploadedPackage)
    {
        // do stuff to the file
        return "create";
    }
}

단, 이 엔드포인트에 파일을 업로드하면 이 엔드포인트는 기본 멀티파트 설정 값을 사용하는 것으로 나타납니다.

Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field package exceeds its maximum permitted size of 1048576 bytes.
    at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl$FileItemStreamImpl$1.raiseError(FileUploadBase.java:633) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.tomcat.util.http.fileupload.util.LimitedInputStream.checkLimit(LimitedInputStream.java:76) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.tomcat.util.http.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:135) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
    at java.io.FilterInputStream.read(FilterInputStream.java:107) ~[na:1.8.0_45]
    at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:98) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:68) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:293) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.catalina.connector.Request.parseParts(Request.java:2776) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
    ... 30 common frames omitted

응용 프로그램은 다음과 같습니다.

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
    }

}

제가 놓치고 있는 게 있나요?@MultipartConfig석을을? 츠요시

Spring Boot 2.0에서는 어플리케이션.yml에서 사용해야 합니다.

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

문서부터:

3을 .javax.servlet.http.Part파일 업로드를 지원하는 API입니다.기본적으로는 Spring Boot은 Spring MVC를 파일당 최대 1MB, 최대 10MB의 파일데이터를 1개의 요구로 설정합니다.중간 데이터가 저장되는 위치(예:/tmp 및 을 사용하여 .MultipartProperties예를 들어 파일을 무제한으로 지정하려면 spring.servlet.multipart.max-file-size 속성을 다음과 같이 설정합니다.-1.

문서 부록 A에서 발췌

spring.servlet.slashart.max-file-size=1MB # 최대 파일사이즈값은 접미사 "MB" 또는 "KB"를 사용하여 각각 MB 또는 킬로바이트를 나타낼 수 있습니다.

spring.servlet.multipart.max-request-size=10MB # 최대 요청 크기.값은 접미사 "MB" 또는 "KB"를 사용하여 각각 MB 또는 킬로바이트를 나타낼 수 있습니다.

""를 사용할 수 .multipart.max-file-size ★★★★★★★★★★★★★★★★★」multipart.max-request-size 최대 '키우다', '키우다', '키우다', 이렇게 할 수 요.100Mb application.properties 삭제:

multipart.max-file-size=100MB
multipart.max-request-size=100MB

에는 접미사가 수 .MB ★★★★★★★★★★★★★★★★★」KB메가바이트 또는 킬로바이트 크기를 나타냅니다.

은 후드에 '스프링 부츠'를 .MultipartConfigElement MultipartProperties 그 리리 and and andMultipartConfigElement는 Spring MVC 매뉴얼에 기재되어 있는 Servlet 등록에 사용됩니다.자세한 내용은 스프링 부트 매뉴얼을 참조해 주세요.

spring-boot 1.5.3에서는 application.yml에서 다음 코드를 사용해야 합니다.

spring:
 http:
  multipart:
   max-file-size: 100MB
   max-request-size: 100MB

yaml 파일에서 탭이 아닌 공백을 사용하십시오.

멀티파트 업로드의 커스텀 제한을 설정하려면 , 다음의 속성을 사용합니다(샘플 사이즈가 30 MB 의 경우).

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

당사의 프로젝트에서는, 그 중 하나가 Spring Boot 버전 1.3.5 로 되어 있는 것을 알 수 있었습니다.따라서 버전 1.4 미만의 경우 를 사용해야 합니다.

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

문서(v1.4.0)에서:

서블릿 3을 수용하는 스프링 부츠javax.servlet.http.Part파일 업로드를 지원하는 API입니다.기본적으로는 Spring Boot에서는 Spring MVC에 파일당 최대 1MB의 파일과 최대 10MB의 파일데이터를 1개의 요구로 설정합니다.이러한 값은 물론 중간 데이터가 저장되는 위치(예:/tmpdirectory) 및 에서 공개되는 속성을 사용하여 데이터가 디스크에 플러시되는 임계값을 초과합니다.MultipartProperties예를 들어, 파일을 무제한으로 지정하려면,spring.http.multipart.max-file-size의 재산.-1.

멀티파트 지원은 멀티파트 부호화 파일 데이터를 수신할 때 도움이 됩니다.@RequestParam-type 파라미터MultipartFileSpring MVC 컨트롤러 핸들러 방식입니다.

버전 1.3.8에 대한 동일한 문서:

예를 들어 파일을 무제한으로 지정하려면multipart.maxFileSize의 재산.-1.

Spring Boot v2+의 경우 application.properties에 다음 항목을 추가합니다.

spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=40MB

애플리케이션 속성도 옵션 중 하나입니다.또 다른 옵션은

@Bean
public MultipartConfigElement multipartConfigElement() {
  MultipartConfigFactory factory = new MultipartConfigFactory();
  factory.setMaxFileSize("10MB");
  factory.setMaxRequestSize("10MB");
  return factory.createMultipartConfig();
}

jenkins 스크립트를 통해 값이 삽입된 배포에서는 "-"가 허용되지 않습니다.용도:

env:
  - name: SPRING_SERVLET_MULTIPART_MAXREQUESTSIZE
    value: "10MB"
  - name: SPRING_SERVLE
    value: "10MB"

언급URL : https://stackoverflow.com/questions/36945482/springboots-multipartconfig-maxfilesize-not-taking-effect

반응형