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();
}
}*/
}
}
}
打包下载zip文件
最新推荐文章于 2024-04-28 00:57:47 发布