300x250
반응형
안녕하세요. J4J입니다.
이번 포스팅은 부트에서 파일 다운로드하는 방법에 대해 적어보는 시간을 가져보려고 합니다.
다운로드될 파일
테스트용으로 다운로드해 볼 파일을 다음과 같은 위치에 두겠습니다.
해당 파일을 부트에서 작성된 코드를 활용하여 웹페이지에서 다운로드해보도록 하겠습니다.
반응형
부트 코드
package com.spring.fileDown.controller;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
import org.springframework.http.ContentDisposition;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FileController {
@GetMapping("/download")
public ResponseEntity<Object> download() {
String path = "F:/uploadFile/jarzip.PNG";
try {
Path filePath = Paths.get(path);
Resource resource = new InputStreamResource(Files.newInputStream(filePath)); // 파일 resource 얻기
File file = new File(path);
HttpHeaders headers = new HttpHeaders();
headers.setContentDisposition(ContentDisposition.builder("attachment").filename(file.getName()).build()); // 다운로드 되거나 로컬에 저장되는 용도로 쓰이는지를 알려주는 헤더
return new ResponseEntity<Object>(resource, headers, HttpStatus.OK);
} catch(Exception e) {
return new ResponseEntity<Object>(null, HttpStatus.CONFLICT);
}
}
}
테스트
위와 같이 코드가 작성되었다면 웹페이지에 접근하여 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/download">
jarzip.PNG
</a>
</body>
</html>
html 코드를 실행하면 다음과 같은 화면이 나옵니다.
그리고 링크를 클릭해보면 파일이 다운로드되는 것을 확인할 수 있습니다.
이상으로 부트에서 파일 다운로드하는 방법에 대해 간단하게 알아보는 시간이었습니다.
읽어주셔서 감사합니다.
728x90
반응형
'Spring > SpringBoot' 카테고리의 다른 글
[SpringBoot] 환경 변수 파일 사용하기 (0) | 2022.03.28 |
---|---|
[SpringBoot] GraphQL 설정 (0) | 2021.12.23 |
[SpringBoot] 파일 업로드 - MultipartFile(With. React) (0) | 2021.05.27 |
[SpringBoot] 다중 DB 및 다중 개발환경에서 JNDI 설정 (0) | 2021.05.25 |
[SpringBoot] Boot환경에서 JNDI사용하기 (2) | 2021.05.17 |
댓글