300x250
반응형
안녕하세요. J4J입니다.
이번 포스팅은 스프링에서 파일 다운로드하는 방법에 대해 적어보는 시간을 가져보려고 합니다.
다운로드될 파일
테스트용으로 다운로드해 볼 파일은 다음과 같은 위치에 저장되어 있습니다.
그리고 이 파일을 스프링을 이용하여 접근할 수 있도록 하고 웹페이지에서 특정 URL에 접근을 하게 되면 해당 파일이 다운로드되는 코드를 구현해보겠습니다.
스프링 코드
package com.spring.fileDown.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FileController {
@GetMapping("/download")
public void download(HttpServletResponse response) throws Exception {
try {
String path = "F:\\uploadFile\\jarzip.PNG"; // 경로에 접근할 때 역슬래시('\') 사용
File file = new File(path);
response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); // 다운로드 되거나 로컬에 저장되는 용도로 쓰이는지를 알려주는 헤더
FileInputStream fileInputStream = new FileInputStream(path); // 파일 읽어오기
OutputStream out = response.getOutputStream();
int read = 0;
byte[] buffer = new byte[1024];
while ((read = fileInputStream.read(buffer)) != -1) { // 1024바이트씩 계속 읽으면서 outputStream에 저장, -1이 나오면 더이상 읽을 파일이 없음
out.write(buffer, 0, read);
}
} catch (Exception e) {
throw new Exception("download error");
}
}
}
테스트
위와 같이 작성된 코드가 정상적으로 동작되는지 확인해보겠습니다.
단순하게 웹페이지를 오픈하여 위의 controller에 접근되는 url을 입력해보면 됩니다.
정상적으로 구현이 되었다면 url입력과 동시에 다음과 같이 파일이 다운로드되는것을 확인할 수 있습니다.
또는 다음과 같이 간단한 html코드를 짜 보겠습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>파일 다운로드</title>
</head>
<body>
<a href="http://localhost:8080/fileDown/download">
jar 알집 다운로드
</a>
</body>
</html>
그리고 html을 실행시키면 다음과 같이 화면이 나옵니다.
해당 화면에서 보이는 다운로드 버튼을 누르게 되면 동일하게 파일이 정상적으로 다운로드되는 것을 확인할 수 있습니다.
이상으로 스프링에서 파일 다운로드하는 방법에 대해 간단하게 알아보는 시간이었습니다.
읽어주셔서 감사합니다.
728x90
반응형
'Spring > Spring' 카테고리의 다른 글
[Spring] STS 이전 버전 설치하기 (0) | 2022.03.17 |
---|---|
[Spring] Filter를 이용하여 Request Parameter 조작하기 (0) | 2021.11.11 |
[Spring] 설정 파일 변경하는 다양한 방법 (xml → Java) (0) | 2021.04.10 |
[Spring] JWT 구현하기 (2) (2) | 2021.04.09 |
[Spring] JWT 구현하기 (1) (0) | 2021.04.08 |
댓글