@GetMapping(value = "/resume/download/personId/{personId}")
public void zipDownload(@PathVariable Long personId, HttpServletResponse response) throws IOException {
String zipName = "resume";
response.setContentType("application/octet-stream");
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + zipName);
List<String> fileNameList = resumeService.getResumeFileNameList(personId);
ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream());
for (String fileName: fileNameList) {
FileSystemResource fileResource = new FileSystemResource(fileBasePath + fileName);
ZipEntry zipEntry = new ZipEntry(fileResource.getFilename());
zipEntry.setSize(fileResource.contentLength());
zipOut.putNextEntry(zipEntry);
StreamUtils.copy(fileResource.getInputStream(), zipOut);
zipOut.closeEntry();
}
zipOut.finish();
zipOut.close();
}
setHeader의 위치를 가장 마지막줄에 위치시키면 다운로드 이름이 제대로 나오지 않는다 하지만 난 다음같은 결과를 원한다
나중에 set하는것은 이전에 무엇이 있든 나중값으로 변경이 될테니 문제가 없을것이라고 생각했다. 그런데 다운로드 기능이 setHeader이전에 끝나기때문에 setHeader되기 전에 이상한이름으로 출력이 되는 것 같다