본문 바로가기
JAVA

[JAVA] 파일 ZIP 압축 및 다운로드

by madinthe90 2022. 1. 12.
반응형

간단한 파일 압축 및 다운로드 코드

/* 다운로드 Zip */
@RequestMapping("/downloadZip.do")
public void downloadZip(@RequestParam Map<String, Object> paramMap, HttpSession session, HttpServletResponse response) throws Exception  {
	//압축할 파일
	String[] fileList = {"C:/Users/kyung/Desktop/테스트첨부파일/TTTTT.txt"
		  	    ,"C:/Users/kyung/Desktop/테스트첨부파일/test.PNG"
		  	    ,"C:/Users/kyung/Desktop/테스트첨부파일/TESTPDF.pdf"};
	
	//생성되는 zip 파일명
	String fileName ="makeZipFile";
	
	response.setContentType("application/octet-stream");
	fileName = URLEncoder.encode(fileName,"UTF-8").replaceAll("\\+", "%20");
	response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"),"8859_1")+".zip" + ";");
	response.setStatus(HttpServletResponse.SC_OK);
	
        try (ZipOutputStream zos = new ZipOutputStream(response.getOutputStream())) {
        	
        	for (String files : fileList) {
        		
                Path src = Paths.get(files);
                
                try (FileInputStream fis = new FileInputStream(src.toFile())) {

                    ZipEntry zipEntry = new ZipEntry(src.getFileName().toString());
                    
                    zos.putNextEntry(zipEntry);

                    byte[] buffer = new byte[1024];
                    int len;
                    while ((len = fis.read(buffer)) > 0) {
                        zos.write(buffer, 0, len);
                    }
                    zos.closeEntry();
                }
            }
        } catch (FileNotFoundException e) {
        	
		e.printStackTrace();
            
        } catch (IOException e) {

		e.printStackTrace();
	}
}

 

 

결과

 

잘 다운받아졌고

 

 

압축도 잘되어있는게 보인다!

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글