컨트롤러 메소드에서 매개변수로 request 와 response 가 있을 것이다. 우선 클라이언트 측에서 zip 파일을 다운로드 받기 위해 response 에 header 를 셋팅해야한다.
response.setHeader("Set-Cookie", "fileDownload=true; path=/");
response.setHeader("Content-Disposition", String.format("attachment; filename=\""+"test"+"_"+format.format(date)+".zip\""));
이런 식으로 클라이언트가 zip 파일을 다운로드 받을 수 있도록 해준다.
이제 ZipOutputStream 을 이용할 것인데, response ouput stream을 이용한다.
ZipOutputStream dowloadZos = new ZipOutputStream(response.getOutputStream());
// 여기서 부터 for 문으로 closeEntry() 메소드까지 감싸주면 됨
ByteArrayOutputStream bosDay = createTaxDayExcel(request, response, searchVO);
saveZos.putNextEntry(new ZipEntry("taxDay_"+excelName+".xlsx"));
dowloadZos.putNextEntry(new ZipEntry("taxDay_"+excelName+".xlsx"));
bosDay.writeTo(dowloadZos);
dowloadZos.closeEntry();
createTaxDayExcel 은 ByteArrayOutStream 을 반환한다.
반응형