본문 바로가기
TIL

Spring Boot에서 Multipart 파일 업로드 시 파일 크기 제한 오류(MaxUploadSizeExceededException )

by 긍고 2024. 9. 30.
728x90
반응형

개요


최근 프로젝트에서 이미지나 대용량 파일을 업로드하는 기능을 구현하면서 예상치 못한 오류를 마주했다. 파일 크기가 커질 때마다 업로드가 실패하고, 서버에서 파일 크기 제한 오류가 발생하는 것을 알게 되었다.

 

Spring Boot에서 기본적으로 설정된 파일 크기 제한이 존재한다는 것을 몰랐고, 이를 해결하는 과정을 통해 중요한 설정을 놓치고 있었다는 것을 깨달았다. 이번 글에서는 Spring Boot에서 파일 크기 제한 오류를 해결하는 방법을 다루고자 한다.

 

Spring Boot의 기본 파일 업로드 설정


Spring Boot는 Multipart 파일 업로드를 기본적으로 지원한다. 하지만 대용량 파일을 업로드할 때는 기본 설정에 의해 크기 제한 오류가 발생할 수 있다. Spring Boot에서 Multipart 파일의 최대 업로드 크기는 기본적으로 1MB로 설정되어 있다. 이를 초과하는 파일을 업로드하려고 하면 MaxUploadSizeExceededException이 발생한다.

 

파일 크기 제한 설정 방법


Spring Boot에서 파일 크기 제한을 설정하기 위해서는 application.properties 파일에 다음과 같은 설정을 추가하면 된다.

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

 

위 설정은 각각 파일 하나의 최대 크기와 요청 전체의 최대 크기를 나타낸다. 10MB로 설정한 경우, 10MB 이상의 파일을 업로드하면 오류가 발생한다. 이 외에도 application.yml 파일을 사용하여 다음과 같이 설정할 수 있다.

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

 

이제 서버는 10MB 이하의 파일에 대해서만 업로드를 허용하게 된다.

 

파일 크기 오류 해결 코드 예시


파일 크기 제한 오류가 발생할 경우, 이를 사용자에게 명확하게 알려주기 위해 예외 처리를 구현할 수 있다. Spring Boot에서 이를 처리하려면 @ControllerAdvice를 사용해 전역 예외 처리를 설정하면 된다.

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;

@ControllerAdvice
public class FileUploadExceptionAdvice {

    @ExceptionHandler(MaxUploadSizeExceededException.class)
    public ResponseEntity<String> handleMaxSizeException(MaxUploadSizeExceededException exc) {
        return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body("파일 크기가 너무 큽니다!");
    }
}

 

이 코드는 파일 크기 제한 오류가 발생할 경우, HTTP 417 상태 코드와 함께 "파일 크기가 너무 큽니다!"라는 메시지를 사용자에게 반환한다. 이를 통해 사용자는 파일 크기가 제한에 걸렸다는 사실을 명확히 알 수 있다.

 

정리


Spring Boot에서 Multipart 파일 업로드 시 파일 크기 제한을 설정하는 것은 간단하지만, 이를 놓치면 예상치 못한 오류가 발생할 수 있다. 프로젝트에서 대용량 파일을 다룰 때는 꼭 파일 크기 제한을 명확히 설정하고, 예외 처리를 통해 사용자에게 오류를 알리는 방식으로 구현하는 것이 중요하다.

728x90

댓글