개발/Spring

[Spring] 자바 파일 여러 개 압축하기

hojak99 2018. 2. 2. 10:12

컨트롤러 메소드에서 매개변수로 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 을 반환한다.

반응형