[스프링] 파일 다운로드 처리 방법

파일 다운로드는 웹 애플리케이션에서 자주 사용되는 기능 중 하나입니다. 스프링 프레임워크를 사용하여 파일 다운로드를 처리하는 방법에 대해 알아봅시다.

1. 컨트롤러에서 파일 다운로드 처리하기

먼저, 스프링 MVC 컨트롤러에서 파일 다운로드를 처리하는 방법을 확인해야 합니다. 컨트롤러 메서드에서 ResponseEntity를 사용하여 파일을 다운로드할 수 있습니다.

아래는 파일을 다운로드하는 컨트롤러 메서드의 예시입니다.

@GetMapping("/downloadFile")
public ResponseEntity<Resource> downloadFile() {
    Resource file = fileStorageService.loadFileAsResource("example.txt");
    return ResponseEntity.ok()
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"")
            .body(file);
}

2. 파일 서비스에서 리소스 로드하기

위 예제에서 사용된 fileStorageService는 파일을 로드하기 위한 서비스입니다. 이 서비스를 구현하여 파일을 읽고 Resource 객체로 반환해야 합니다.

@Service
public class FileStorageService {
    public Resource loadFileAsResource(String fileName) {
        // 파일 로드 및 Resource 반환 로직 구현
    }
}

3. 웹 구성 설정

마지막으로, 웹 구성에서 컨텐츠 유형 및 크기에 대한 설정을 확인해야 합니다. WebMvcConfigurer를 구현하거나 WebMvcConfigurerAdapter를 확장하여 MIME 유형 및 파일 크기를 설정할 수 있습니다.

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }
}

결론

이제 스프링을 사용하여 파일 다운로드를 처리하는 방법에 대해 알아보았습니다. 컨트롤러에서 ResponseEntity를 반환하고 파일을 로드하기 위한 서비스를 구현하며, 마지막으로 웹 구성에서 필요한 설정을 완료하면 됩니다.

이를 통해 스프링 기반 애플리케이션에서 파일 다운로드를 쉽게 처리할 수 있습니다.