[java] Spring MVC에서 파일 업로드 처리하는 방법

Spring MVC는 파일 업로드를 처리하는 간단하고 효율적인 방법을 제공합니다. 이번 포스트에서는 Spring MVC를 사용하여 파일 업로드를 처리하는 방법에 대해 알아보겠습니다.

1. 의존성 추가

먼저, Spring MVC에서 파일 업로드를 처리하기 위해 필요한 의존성을 추가해야 합니다. 여러분이 사용하는 빌드 도구에 따라 의존성을 추가하십시오. 예를 들어, Maven을 사용한다면 pom.xml 파일에 다음의 의존성을 추가합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.5.2</version>
</dependency>

2. 파일 업로드 폼 생성

다음으로, 파일을 업로드할 수 있는 폼을 생성해야 합니다. HTML 폼에서 enctype 속성을 multipart/form-data로 설정하여 파일 업로드를 지원하도록 해야 합니다.

<form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="Upload" />
</form>

3. 파일 업로드 컨트롤러 생성

파일을 업로드하는 컨트롤러를 생성합니다. Spring MVC는 @RequestParam 어노테이션을 사용하여 업로드된 파일을 처리할 수 있습니다.

@Controller
public class UploadController {

    @PostMapping("/upload")
    public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
        // 파일 업로드 처리 코드 작성
        // 업로드된 파일을 저장하거나 다른 작업을 수행할 수 있습니다.

        redirectAttributes.addFlashAttribute("message", "파일 업로드가 성공적으로 완료되었습니다.");

        return "redirect:/";
    }
}

위의 예제에서 handleFileUpload 메소드는 @RequestParam("file") 어노테이션을 통해 업로드된 파일을 MultipartFile 객체로 받습니다. 이후 파일 업로드 처리 코드를 작성하고, 작업이 완료된 후에 RedirectAttributes를 사용하여 리다이렉트 시에 메시지를 전달합니다.

4. 파일 저장 위치 설정

마지막으로, 업로드된 파일을 저장할 위치를 설정해야 합니다. 이는 application.properties 파일에 다음과 같이 설정할 수 있습니다.

spring.servlet.multipart.location=/path/to/save/files
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

위의 예제에서 spring.servlet.multipart.location 속성은 업로드된 파일을 저장할 디렉토리 경로를 설정합니다. spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size 속성은 각각 파일의 최대 크기 및 요청의 최대 크기를 설정합니다.

마무리

이상으로 Spring MVC에서 파일 업로드를 처리하는 방법에 대해 알아보았습니다. Spring MVC의 간단한 어노테이션과 설정만으로 파일 업로드를 쉽게 구현할 수 있습니다. 추가적으로 보다 복잡한 파일 업로드 처리를 위해 Spring의 MultipartResolver나 Apache Commons FileUpload를 활용할 수도 있습니다.

더 자세한 내용은 Spring MVC 파일 업로드 공식 문서를 참고해 주세요.