public void downloadAttachZip(Long contId, HttpServletResponse response, HttpServletRequest request) {
InputStream in = null;
OutputStream os = null;
ZipOutputStream zos = null ;
try{
ContractDto contract = contractAgent.getContractDtoByContId(contId).getData();
List<ContractAttachDto> attachList = contractAttachAgent.getAttachListByContId(contId).getData();
String fileName = contract.getSideCompanyName() + "_" + contract.getContCode() + DateFormatUtils.format(new Date(),"yyyy-MM-dd") + ".zip";
String a = "a";
response.reset();
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
// 設定導出形式
response.setContentType("application/OCTET-STREAM");//下載下傳流
//response.setContentType("application/vnd.ms-excel");//下載下傳Excel時用(告訴浏覽器下載下傳的是Excel)
// 設定下載下傳的檔案名稱
response.setHeader("Content-Disposition",
"attachment;fileName=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1"));
if(os == null)
os = response.getOutputStream();
// 建立outputstream zos = new ZipOutputStream(out); out為response産生
zos = new ZipOutputStream(os);
for(ContractAttachDto attach : attachList){
if(attach.getAttachTypeId() == 1){
//1連接配接ftp伺服器 擷取inputstream
in = new URL(attach.getContAttachLink()).openConnection().getInputStream();
byte[] buf = new byte[2048];
zos.putNextEntry(new ZipEntry(attach.getContAttachName()));
int len;
while ((len = in.read(buf)) != -1){
zos.write(buf, 0, len);
}
zos.closeEntry();
in.close();
}
}
} catch (Exception e) {
throw new RuntimeException("zip error from ZipUtils",e);
}finally{
if(zos != null){
try {
zos.close();
} catch (Exception e) {
e.printStackTrace();
} /*finally{
try{
os.close();
} catch (Exception e){
e.printStackTrace();
}
}*/
}
}
}