解决方案 »
- myeclipse编辑器问题
- 有关static的问题
- 在使用struts的时候,前台提交的数据,action得不到?
- 关于在SmartUpload上传时相对路径的问题?
- 编写一个Java GUI应用程序,采用Java多线程技术,模拟自由落体和平抛运动:一个球自由落下,一个球水平抛出。(
- Tomcat中dbcp关闭超时连接时不打印日志
- 就那么一个小问题,你说我冤不冤??!!
- JDOM生成XML的问题
- 怎么知道我是否装了java VM啊?一个软件安装时,要我make sure装了java VM,我java一点也不懂:)
- java 如何用syslog.4j 接收然后解析消息
- java猜拳游戏-----出现报错。。。输的莫名其妙啊
- Spring中如何配置能够实现jms持久化到oracle数据库中?
这个是关键 你想一边打包一边发送给客户。这个估计不好实现吧 发送给客户的文件都是提前JAVA读取的 你中途再往里面写东西 可能是不行的
建议你可以分2个功能按钮 一个是开始打包,然后弹出窗口后台正在打包,大概要多长时间,这个需要调整SESSION 如果要0-3个小时还可以接受 扫描需要打包的文件的总大小/每秒打包的速度
最后打包完成之后提示可以下载了 将下载链接写入数据库也可以 记录这个人操作了操作过
1、ajax到后台去压缩,弹出层灰色,正在压缩,请稍候.....
2、成功后返回客户端再去下载。
当然你也可以用自己做一个线程池,压缩。然后在去访问。
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();