jar 파일로 말면 기존 프로젝트 디렉토리랑 구조가 달라져서 resource 폴더 내에 저장된 파일 경로가 꼬이더라
그래서 사용한 방법
핵심은 이 부분!!
Path filePath = Paths.get(File.separatorChar + "directory_name", File.separatorChar + fileName); Resource resource = new InputStreamResource(getClass().getResourceAsStream(filePath.toString()));
Controller
@GetMapping(value = "input-template-download/{fileName}")
public ResponseEntity<Resource> downloadResourceFile(@PathVariable String fileName) throws IOException{
return fileService.getResourceFile(fileName);
}
Service
public ResponseEntity<Resource> getResourceFile(String fileName) throws IOException{
Path filePath = Paths.get(File.separatorChar + "directory_name", File.separatorChar + fileName);
Resource resource = new InputStreamResource(getClass().getResourceAsStream(filePath.toString()));
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.cacheControl(CacheControl.noCache())
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName + "")
.body(resource);
}
Directory Structure
[spring boot 프로젝트 디렉토리]
---src
|---main
|---....서비스, 클래스 등 들어 있는 폴더
|--- resources
|---directory_name
|---templates
|---...
...
|---test---...