"그 요청은 크기 때문에 거절되었습니다." 스프링, 톰캣
스프링부트로 간단한 업로드 앱을 만들려고 하는데 10Mb+ 파일을 업로드하려고 할 때까지 정상적으로 작동합니다. 화면에 다음 메시지가 표시됩니다.
There was an unexpected error (type=Internal Server Error, status=500).
Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (14326061) exceeds the configured maximum (10485760)
저는 조사를 좀 해봤지만, 지금까지 효과가 없었습니다.제가 지금까지 시도했던 것들을 아래에 두겠습니다.
이 코드를 (다양한 방식으로) 내 "application.yml"에 넣으십시오.
multipart:
maxFileSize: 51200KB
maxRequestFile: 51200KB
저는 또한 이것을 교장 선생님 수업에서 시도해 보았습니다.
@Bean
public TomcatEmbeddedServletContainerFactory containerFactory() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
}
});
return factory;
}
그리고 이상한 것.my tomcat web.xml에 입력하면 multipart-config는 다음과 같습니다.
<multipart-config>
<!-- 50MB max -->
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
그렇다면 이 "...구성된 최대값(10485760)"은 대체 어디서 나온 것입니까? (부록:netbeans 8.1과 spring boot 1.5)를 사용하고 있습니다.
Thx 여러분.(그리고 영어 s2는 미안합니다)
요청한 이후로, 이것은 나의 애플리케이션입니다.yml
server:
port: 9999
context-path: /client
logging:
level:
org.springframework.security: DEBUG
endpoints:
trace:
sensitive: false
spring:
thymeleaf:
cache: false
multipart:
maxFileSize: 51200KB
maxRequestFile: 51200KB
#################################################################################
security:
basic:
enabled: false
oauth2:
client:
client-id: acme2
client-secret: acmesecret2
access-token-uri: http://localhost:8080/oauth/token
user-authorization-uri: http://localhost:8080/oauth/authorize
resource:
user-info-uri: http://localhost:8080/me
#
spring:
http:
multipart:
enabled: true
max-file-size: 50MB
max-request-size: 50MB
또는
spring.http.multipart.max-file-size=50MB
spring.http.multipart.max-request-size=50MB
여기서 참조
효과가 있기를 바랍니다.
버전에 따른 방법은 다음과 같습니다.
1분의 1:
spring.servlet.multipart.max-file-size=1000MB
spring.servlet.multipart.max-request-size=1000MB
2초:
spring.http.multipart.max-file-size=50MB
spring.http.multipart.max-request-size=50MB
3분의 1:
multipart.enabled=true
multipart.max-file-size=100MB
multipart.max-request-size=100MB
SpringBoot 1.5.7 ~ 2.1.2의 경우 application.properties 파일에서 설정해야 하는 속성은 다음과 같습니다.
spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
또한 "resources" 폴더에 application.properties 파일이 있는지 확인합니다.
spring:
servlet:
multipart:
enabled: true
file-size-threshold: 200KB
max-file-size: 500MB
max-request-size: 500MB
SpringBoot 2.6.3에서 "spring.http.multipart.max-file-size" 설정이 작동하지 않았습니다.다음은 저에게 효과가 있었습니다.
spring:
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MB
Commons Multipart Resolver를 구성하기 위해 빈 이름을 MultipartFilter로 정의합니다.DEFAULT_MULTIPART_RESOLVER_BEAN_NAME 기본 스프링 부트의 기본 MultipartFilter는 기본 빈 이름을 가진 해결 프로그램을 찾습니다.
@Bean(name = MultipartFilter.DEFAULT_MULTIPART_RESOLVER_BEAN_NAME)
protected MultipartResolver getMultipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(20971520);
multipartResolver.setMaxInMemorySize(20971520);
return multipartResolver;
}
저도 이 문제가 있었는데 application.properties의 spring.http.multipart.max-file-size=20MB 및 spring.http.multipart.max-request-size=20MB 속성 설정이 작동하지 않는 이유를 모르겠습니다.최대 파일 크기를 변경하려면 이 가이드를 따릅니다. https://www.baeldung.com/spring-maxuploadsizeexceeded
그래서 저는 이것을 교장 선생님 수업에 추가했습니다.
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver
= new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(20000000);
return multipartResolver;
}
그런 다음 MaxUploadSize를 처리합니다.초과됨예외, 복사했습니다.
@ControllerAdvice
public class FileUploadExceptionAdvice {
@ExceptionHandler(MaxUploadSizeExceededException.class)
public ModelAndView handleMaxSizeException(
MaxUploadSizeExceededException exc,
HttpServletRequest request,
HttpServletResponse response) {
ModelAndView modelAndView = new ModelAndView("file");
modelAndView.getModel().put("message", "File too large!");
return modelAndView;
}
}
그리고 다음과 같은 간단한 file.dll 템플릿을 작성했습니다.
<!DOCTYPE html>
<html lang="en"
xmlns:th="http://www.thymeleaf.org"
>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3 th:text="${message}"></h3>
</body>
</html>
이 코드를 추가한 후 로그에서 MaxUploadSize를 확인했습니다.초과됨예외 오류가 처리되었지만 브라우저에서 오류가 발생했습니다.솔루션에서 application.properties에 다음을 추가했습니다.
server.tomcat.max-swallow-size=60MB
이 튜토리얼의 예: https://www.youtube.com/watch?v=ZZMcg6LHC2k
언급URL : https://stackoverflow.com/questions/49304767/the-request-was-rejected-because-its-size-spring-tomcat
'programing' 카테고리의 다른 글
SQL - 각 레코드에 대한 Call Stored Procedure (0) | 2023.09.02 |
---|---|
수직 중심화 부트스트랩 모달 창 (0) | 2023.09.02 |
마리아와 함께 암호를 쓰는 사람DB (0) | 2023.09.02 |
오류입니다. ORA-12154: TNS: 지정된 연결 식별자를 확인할 수 없습니까? (0) | 2023.09.02 |
값이 목록의 구성원인지 확인하는 중 (0) | 2023.09.02 |