스프링 부트 - 다중 파트 파일 최대 업로드 크기 예외
(표준 Tomcat 내장 웹 서버를 사용하여) Spring Boot 2.1.3으로 이미지를 업로드하는 엔드포인트를 개발하고 있으며 멀티파트 업로드의 크기를 제한하고 싶습니다.다음과 같은 속성으로 쉽게 작업할 수 있습니다.
spring:
servlet:
multipart:
max-file-size: 2MB
max-request-size: 2MB
하지만 예외를 던지는 Tomcat이기 때문에 Spring이 잡을 수 없는 500점을 항상 받고 요청이 Rest Controller의 내 코드에 도달하지 않습니다.
2019-03-02 10:12:50.544 ERROR [] [ o.a.c.c.C.[.[.[/].[dispatcherServlet]] [] Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (3917946) exceeds the configured maximum (2097152)] with root cause
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (3917946) exceeds the configured maximum (2097152)
My ExceptionHandler는 이와 같으나 주석에 포함된 예외가 무엇이든 작동하지 않습니다.
@ExceptionHandler(MaxUploadSizeExceededException.class)
public ResponseEntity handleMaxSizeException(Exception e) {
logger.warn(e.getMessage());
...
return status(HttpStatus.PAYLOAD_TOO_LARGE).body(...);
}
이미 언급한 속성으로 시도했지만 아무런 효과가 없었습니다.
@Bean
public TomcatServletWebServerFactory containerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((TomcatConnectorCustomizer) connector ->
((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1));
return factory;
}
다음 질문(및 기타...)에서 이미 답을 확인했지만 대부분이 구식이거나 단순히 작동하지 않습니다.
누군가가 이것 때문에 힘들어하나요?
이것을 당신의 것에 추가해 주세요.application.properties
:
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB
위의 구성에서 필요에 따라 크기를 변경할 수 있습니다.
조금 늦었습니다.application.properties 또는 application.yml에 설정해야 합니다.server.tomcat.max-swallow-size=-1
it tomcat을 사용하면 업로드 요청에 간섭하지 않고 봄까지 작업이 완전히 처리되고 예외 컨트롤러가 완벽하게 작동합니다.레퍼런스
비슷한 문제를 겪고 있었습니다.Tomcat은 글로벌 web.xml에서 기본 설정을 사용했는데도 요청이 구성된 최대값(2097152)을 초과한다고 계속 불평했습니다.
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
마침내 알게 되었습니다. 제가 개발 중인 서블릿 클래스는 @MultipartConfig 주석이 있는 서블릿 클래스를 확장하지만, 제 로컬 클래스는 @MultipartConfig 주석이 없습니다.따라서 요청이 다중 부분으로 처리되지 않아 이 오류가 발생했습니다.
오류가 발생한 코드는 다음 행의 슈퍼 클래스에 있습니다.
//Search through the parts for an uploaded file
for (Part part : request.getParts()) {
언급URL : https://stackoverflow.com/questions/54958189/spring-boot-multipart-file-maximum-upload-size-exception
'programing' 카테고리의 다른 글
Oracle 클라이언트 및 네트워킹 구성 요소를 찾을 수 없습니다. (0) | 2023.08.14 |
---|---|
fork() 뒤에 있는 'file descriptor'에 대한 간단한 설명 찾기 (0) | 2023.08.14 |
CheckChanged에서 트리거하지 않고 CheckChanged 값 변경 (0) | 2023.08.14 |
Ajax 성공 후 페이지 다시 로드 (0) | 2023.08.14 |
Pandas: Excel 시트에서 항상 첫 번째 시트/탭 선택 (0) | 2023.08.14 |