content-type을 multipart로 파일업로드를 구현하고 파일업로드에 문제가 없었는데 어늘 갑자기 에러가 발생했다.
"org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.\r\n\tat org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:124)\r\n\tat org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:115)\r\n\tat org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init> ..생략"
파일사이즈 문제가 나오길래 지금 등록하려는 파일사이즈를 확인해보니 평소에는 kb를 등록한것이지만 이번에 등록한건 1.14mb이다. 그렇게 크지도 않은데 에러가 발생했다.
오류 해석
1048576 bytes는 약 1MB로 용량 설정을 하지 않았을 때의 디폴트 값이라 그 이상을 업로드 하려면 따로 설정을 해줘야 한다.
api에 접근하지도 못하는걸로 봐선 springboot에서 기본적으로 1MB이상은 막아놓듯 하다.
해결방법
application.properties 또는 yml에서 설정을 할 수 있고 나 처럼 springmvcconfiguration에서 설정하는 방법이 있는데 나는 후자로 설정했다.
public class SpringMvcConfiguration implements WebMvcConfigurer {
* Max FileSize 4mb
* @return
*/
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setMaxUploadSize(1024 * 1024 * 4);
return resolver;
}
파일사이즈 읽는 법
각 데이터 크기는 1024의 제곱으로 표현
1,024Byte는 1KB
1MB는 1,024KB이므로 1,024Byte(1KB)가 1024번 곱해진다고 생각하면 편합니다.
이렇게 등록을 했지만
오류발생:
Error creating bean with name 'multipartResolver' defined in class path resource 에러발생
해석:
빈 생성 실패 오류로 인한 multipartResolver사용 금지
해결방법
pom.xml에 fileupload 빈 등록하기
스프링에서 Multipart 기능을 사용하기 위해 MultipartResolver를 등록해주어야 한다.
MultipartResolver는 CommmnosMultipartResolver 클래스를 빈으로 등록하여 사용한다.
CommmnsMultipartResolver클래스는 CommonsFileUpload API를 이용하는데, CommonsFileUpload API를 찾을 수 없어서 발생하는 오류이다.
pom.xml
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
'Dev.BackEnd > Spring & Spring Boot' 카테고리의 다른 글
http를 https로 변경할 수 있도록 무료 ssl 인증서 발급 (certbot설치) (0) | 2023.11.16 |
---|---|
[springboot,mysql] mysql 5.xx버전에서 8.xx버전으로 바꿔 driver가 spring에 붙지 않을 때 (0) | 2023.11.07 |
[스프링부트] 알림 기능(실시간 알림 받기) SSE사용 (feat lastEventId) (0) | 2023.10.07 |
SpringBoot: @RequestParam vs @RequestBody이해하기 (0) | 2023.09.20 |
[스프링부트] Scheduled을 이용해 일정시간 또는 특정시간에 코드가 실행되게 해보자 (0) | 2023.08.25 |