页面下载zip包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zisgood/article/details/90645704

调用接口:

@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);
​​​​​​​}

 

展开阅读全文

没有更多推荐了,返回首页