스프링 업로드 파일 크기 제한 오류
Spring Boot을 사용하고 있으며 1MB보다 작은 이미지를 보낼 수 있지만 1MB보다 큰 이미지로 게시 요청을 하면 다음 오류가 발생합니다.
Maximum upload size exceeded; nested exception is java.lang.IllegalStateException:org.apache.tomcat.util.
http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
저는 이 오류에 대한 답을 찾기 위해 너무 많은 곳을 둘러보았습니다.저는 이 모든 질문들을 살펴보았고 그들이 제안하는 것을 실행하려고 노력했지만 소용이 없었습니다.봄 업로드 파일 크기 제한입니다. maxFileSize를 설정하려고 하지만 org.apache.tomcat.util.http.fileUpoad가 허용되지 않습니다.FileUploadBase$파일 크기 제한초과됨스프링 부팅 시 멀티파트 파일의 예외 및 최대 제한
Spring 버전 2.0.3을 사용하고 있으며 다음은 포스트 매핑입니다.
@PostMapping("/post")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) {
String message = "";
try {
storageService.store(file);
files.add(file.getOriginalFilename());
message = "You successfully uploaded " + file.getOriginalFilename() + "!";
return ResponseEntity.status(HttpStatus.OK).body(message);
} catch (Exception e) {
message = "FAIL to upload " + file.getOriginalFilename() + "!";
return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(message);
}
}
다음은 제가 시도한 모든 application.properties 구성입니다.
1
spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1
2
spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=5MB
3
spring.http.multipart.max-file-size=5MB
spring.http.multipart.max-request-size=5MB
4
multipart.max-file-size=5MB
multipart.max-request-size=5MB
5
server.tomcat.max-file-size=5000000
6
server.tomcat.max-http-post-size=5000000
7
spring.servlet.multipart.maxFileSize=-1
spring.servlet.multipart.maxRequestSize=-1
application으로 변경하려고 시도하기도 했습니다.yml:
spring:
servlet:
multipart:
max-file-size: 5MB
max-request-size: 5MB
web.xml 파일에서 Tomcat이 허용하는 요청 크기를 변경하는 것도 알아봤지만 web.xml 파일이 없습니다.내가 사용하고 있는 Tomcat은 앱에 번들로 포함되어 있습니다.
Spring Boot 버전 2.0.0.REASE 이상의 application.properties에 다음 행을 추가합니다.
spring.servlet.multipart.max-file-size=128MB
spring.servlet.multipart.max-request-size=128MB
spring.servlet.multipart.enabled=true
버전이 낮은 경우(예: 1.5.9.REASE 및 이하의 구성은 다음과 같습니다.
spring.http.multipart.max-file-size = 20MB
spring.http.multipart.max-request-size = 20MB
최신 스프링 부트에 따라 아래의 공통 속성이 작동해야 합니다.
다중 부품(다중 부품 속성)
spring.servlet.multipart.enabled=true # Whether to enable support of multipart uploads.
spring.servlet.multipart.file-size-threshold=0 # Threshold after which files are written to disk. Values can use the suffixes "MB" or "KB" to indicate megabytes or kilobytes, respectively.
spring.servlet.multipart.location= # Intermediate location of uploaded files.
spring.servlet.multipart.max-file-size=1MB # Max file size. Values can use the suffixes "MB" or "KB" to indicate megabytes or kilobytes, respectively.
spring.servlet.multipart.max-request-size=10MB # Max request size. Values can use the suffixes "MB" or "KB" to indicate megabytes or kilobytes, respectively.
spring.servlet.multipart.resolve-lazily=false # Whether to resolve the multipart request lazily at the time of file or parameter access.
또는 다중 부분 속성을 제어하려는 경우multipart.max-file-size
그리고.multipart.max-request-size
속성이 작동해야 합니다.
multipart.max-file-size=5MB
multipart.max-request-size=5MB
Spring boot Version(예: 1.X)에 따라 application.properties에 따라 파일 크기 제한을 설정합니다.
spring.http.multipart.max-file-size=128KB
spring.http.multipart.max-request-size=128KB
스프링 부트 2.x/이상:
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
이것이 바로 제가 가지고 있는 것이며 백엔드에 완벽하게 적합합니다.
@PutMapping(value = USER_PROFILE_UPDATE_URL_MAPPING)
public String updateProfile(
@ModelAttribute(AUTHORIZED_USER_MODEL_KEY) User user,
BindingResult bindingResult,
@RequestParam(name = "file") MultipartFile multipartFile,
Model model, @RequestParam Map<String, String> params) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
User authorizedUser = (User) authentication.getPrincipal();
//....
return REDIRECT_TO_LOGIN;
}
그리고 bootstrap.yml 파일에서, 저는 간단하게 이런 것을 가질 것입니다...최대 파일 크기는 2MB만 허용됩니다.
---
spring:
servlet:
multipart:
max-file-size: 2MB
max-request-size: 2MB
그리고 마지막으로, 제 HTML 파일에, 저는 이런 것을 가질 것입니다.
<form id="profileForm"
th:action="@{/update}"
th:object="${user}"
method="post" enctype="multipart/form-data">
<!-- This will modify the method to PUT to match backend -->
<input type="hidden" name="_method" value="PUT">
...
<div class="col-md-3">
<div class="form-group row">
<label for="file" class="custom-file">
<input name="file" type="file" id="file" aria-describedby="fileHelpId" class="form-control-file btn btn-outline-info">
</label>
<small id="fileHelpId" class="form-text text-muted">Maximum size should be 2MB</small>
</div>
</div>
그리고 이것은 완벽하게 잘 작동할 것입니다.Spring Boot 2.0.3도 사용하고 있습니다.
이거 먹어봤어요?
spring.http.multipart.maxFileSize = 20MB
spring.http.multipart.maxRequestSize = 20MB
OR
spring.http.multipart.max-file-size = 20MB
spring.http.multipart.max-request-size = 20MB
Spring Boot 1.5.x와 함께 사용 가능
This worked for me.
We can make changes to file size either in
1. application.properties 2. TOMCAT configuration(server.xml)
A. Ideally we should make use of application.properties
B. And for that first we need to disable in TOMCAT config file "server.xml" by setting maxSwallowSize=-1 .
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxSwallowSize = "-1"/>
C. Then set application.properties as
spring.servlet.multipart.max-file-size=15MB
spring.servlet.multipart.max-request-size=15MB
spring.servlet.multipart.enabled=true
참조하다org.springframework.boot.autoconfigure.web.MutltipartProperties
속성을 설정할 때 사용할 접두사를 이해하는 클래스입니다.위의 모든 명명 규칙은 다양한 버전의 스프링 프레임워크에 적용됩니다.
언급URL : https://stackoverflow.com/questions/51410540/spring-upload-file-size-limit-error
'programing' 카테고리의 다른 글
성능 테스트를 위해 오라클 캐시를 비활성화하는 방법 (0) | 2023.06.25 |
---|---|
Oracle에서 임시 테이블로 선택 (0) | 2023.06.25 |
Django Rest Framework를 사용하여 관련 모델 필드를 포함하려면 어떻게 해야 합니까? (0) | 2023.06.25 |
Python: 데이터 프레임에서 시간 델타를 int로 변환 (0) | 2023.06.25 |
Spring Boot Resource Server에서 보안 예외 처리 (0) | 2023.06.25 |