调用接口:
@RequestMapping("/downloadImgPackage")
@ResponseBody
public void downloadImgPackage(HttpServletRequest request,
HttpServletResponse response) {
List<Attachment> list = attachmentService.select(1);
StringBuffer sb = new StringBuffer();
try {
for (Attachment attachment : list) {
sb.append(attachment.getAttachUri() + ",");
}
//设置服务端向客户端游览器发送文件
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename="+new String( "imagePackage".getBytes("utf-8"), "ISO8859-1" )+".zip");
OutputStream out = response.getOutputStream();
response.flushBuffer();
FileUtil.writeZip(sb, out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
打zip包方法:
public static void writeZip(StringBuffer sb, OutputStream os) throws IOException {
String[] files = sb.toString().split(",");
ZipOutputStream zos = new ZipOutputStream(os);
byte[] buf = new byte[8192];
int len;
for (int i = 0; i < files.length; i++) {
File file = new File(files[i]);
if (!file.isFile()) {
continue;
}
ZipEntry ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
while ((len = bis.read(buf)) > 0) {
zos.write(buf, 0, len);
}
zos.closeEntry();
}
// zos.setEncoding("GBK");
zos.closeEntry();
zos.close();
}
页面调用方法:
function downloadImg() {
var code = $("#code").val();
window.open(ctx+"hnty/attachment/downloadImgPackage?relationType=06&relationTypeId="+code);
}