2017년 4월 18일 화요일

Java 압축파일 zip 다운로드


압축파일(zip)을 만든 후 다운로드하는 소스이다.

  • zip 파일을 생성한다.
ZipOutputStream zout = null; 
String zipName = "C:/test.zip"; 
try{ 
  zout = new ZipOutputStream(new FileOutputStream(zipName)); 
  byte[] buf = new byte[1024]; 
  FileInputStream in = new FileInputStream("C:/test.txt");//압축대상 파일 
  zout.putNextEntry( new ZipEntry("test.txt") ); 
  int len; 
  while( (len = in.read(buf)) > 0 ){ 
    zout.write(buf, 0, len); 
  } 
  zout.closeEntry(); 
}catch(Exception e){ 
e.printStackTrace(); 
}finally{ 
if( null != zout ){ 
try { 
      zout.close(); 
}catch(Exception e){ 
zout = null; 
}


  • 생성 된 zip파일을 읽어 다운로드 받을 수 있게 처리한다.
File zipFile = new File(zipName); 
res.setContentType("application/x-zip-compressed;"); 
res.setHeader("Content-Disposition", "attachment; filename=\"" + zipFile.getName() + "\";"); 
OutputStream out = null; 
InputStream in = null; 
try{ 
  out = res.getOutputStream(); 
  in = new FileInputStream(zipFile); 
byte[] buf = new byte[1024]; 
  int len; 
  while( (len = in.read(buf)) > 0 ){ 
  out.write(buf, 0, len); 
  }
}catch(Exception e){ 
  e.printStackTrace(); 
}finally{ 
  if (out != null) { 
    try { out.close(); } catch (Exception e) {} out = null; 
  } 
  if (in != null) { 
    try { in.close(); } catch (Exception e) {} in = null; 
  } 
}

댓글 없음:

댓글 쓰기

스프링 빈 등록 순서 오류 시 @PostConstruct 사용

  스프링 xml 설정에서 등록할 빈을 명시적으로 지정한 것과 <context:component-scan>와 혼용해서 사용한  경우 빈등록 순서 오류가 발생 할 수도 있습니다. 여러가지 방법이 있지만, 그 중에서 @PostConstruct ...