解决方案 »

  1.   

    也就是希望能做到边打包边下载的效果,有没有人知道这种情况怎么解决呀!  
    这个是关键 你想一边打包一边发送给客户。这个估计不好实现吧 发送给客户的文件都是提前JAVA读取的 你中途再往里面写东西 可能是不行的
    建议你可以分2个功能按钮 一个是开始打包,然后弹出窗口后台正在打包,大概要多长时间,这个需要调整SESSION 如果要0-3个小时还可以接受 扫描需要打包的文件的总大小/每秒打包的速度
    最后打包完成之后提示可以下载了 将下载链接写入数据库也可以 记录这个人操作了操作过  
      

  2.   

    这种你只有做延迟,让用户感觉程序在运行。
    1、ajax到后台去压缩,弹出层灰色,正在压缩,请稍候.....
    2、成功后返回客户端再去下载。
    当然你也可以用自己做一个线程池,压缩。然后在去访问。
      

  3.   

    边打包边下载啦,不用创建临时文件
    ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
    byte[] buffer = new byte[8192];
    int len = 0;
    for (ArrayList<String> rList : list) {
    File file = new File(rList.get(4));
    ZipEntry ze = new ZipEntry(rList.get(0)+"_"+rList.get(2)+"_"+rList.get(3)+"_"+("".equals(rList.get(1))?"未知车牌号":rList.get(1))+"_"+DateUtil.formatByPattern("HHmmssSSS")+suffix);
    zos.putNextEntry(ze);
    zos.setEncoding("gbk");
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
    while ((len = bis.read(buffer))!=-1) {
    zos.write(buffer, 0, len);
    }
    bis.close();
    zos.closeEntry();
    }
    zos.close();