[java] Spring MVC에서 파일 다운로드 구현 방법

Spring MVC는 파일 다운로드를 구현하는 간단하고 효율적인 방법을 제공합니다. 이 문서에서는 Spring MVC를 사용하여 파일 다운로드를 구현하는 방법을 알아보겠습니다.

파일 다운로드 컨트롤러 생성

첫 번째로, 파일 다운로드를 처리하는 Spring MVC 컨트롤러를 생성해야 합니다. 이 컨트롤러는 클라이언트로부터 요청을 받아 파일을 다운로드하는 역할을 합니다. 다음은 파일 다운로드를 처리하는 컨트롤러의 예입니다.

@Controller
public class FileDownloadController {

   // 파일 다운로드를 처리하는 메소드
   @GetMapping("/download")
   public ResponseEntity<Resource> downloadFile() throws IOException {
      // 파일 경로 설정
      String filePath = "/path/to/file/example.txt";
      
      // 파일을 로드하여 Resource 객체 생성
      Resource fileResource = new FileSystemResource(filePath);
      
      // Response Header에 파일 이름 설정
      HttpHeaders headers = new HttpHeaders();
      headers.add("Content-Disposition", "attachment; filename=" + fileResource.getFilename());
      
      // 파일을 바이트 배열로 변환한 뒤 Response Body에 추가
      byte[] fileBytes = StreamUtils.copyToByteArray(fileResource.getInputStream());
      
      return new ResponseEntity<>(fileBytes, headers, HttpStatus.OK);
   }
}

위의 예제에서는 /download 경로로 GET 요청이 들어오면, /path/to/file/example.txt 파일을 다운로드하는 역할을 합니다. 다운로드할 파일 경로를 본인의 상황에 맞게 변경해주세요.

파일 다운로드 링크 생성

다음으로, 파일 다운로드를 위한 링크를 생성해야 합니다. 파일 다운로드 링크를 생성하기 위해서는 Thymeleaf 또는 JSP와 같은 템플릿 엔진을 사용할 수 있습니다. 다음은 Thymeleaf를 사용하여 파일 다운로드 링크를 생성하는 예입니다.

<a th:href="@{/download}">파일 다운로드</a>

위의 예제에서는 /download 경로로 이동하는 파일 다운로드 링크를 생성합니다.

파일 다운로드 결과 확인

링크를 클릭하여 파일 다운로드를 테스트할 수 있습니다. 클라이언트가 /download 경로로 요청을 보내면, 서버는 파일을 다운로드하게 됩니다. 다운로드되는 파일은 클라이언트의 웹 브라우저에 의해 자동으로 저장됩니다.

결론

Spring MVC를 사용하여 파일 다운로드를 구현하는 방법을 알아보았습니다. 파일 다운로드를 처리하는 컨트롤러를 생성하고 링크를 생성하여 파일 다운로드를 테스트할 수 있습니다. 이를 통해 Spring MVC에서 파일 다운로드를 손쉽게 구현할 수 있습니다.


참고문서: