日期:2014-05-18  浏览次数:20704 次

java批量打包下载
需要从服务器上下载大量的图片文件,所有在后台把这些图片写入压缩包,然后供下载,问题就是在打包的过程中,速度很慢的,需要等服务器的压缩包压缩好后,才弹出浏览器的下载框,怎么才能在点击下载按钮后就弹出下载框,也就是希望能做到边打包边下载的效果,有没有人知道这种情况怎么解决呀!
------解决方案--------------------
这样不行的,换一种思路,把压缩包少放一点,比如100个文件,每10个文件打包,然后下载。
------解决方案--------------------
引用:
Quote: 引用:

这样不行的,换一种思路,把压缩包少放一点,比如100个文件,每10个文件打包,然后下载。


关键是有几千上万张的图片啊,就算100个文件分成10个压缩包,怎么一次性下载这10个压缩包呢?

前台控制下吧。每隔一段时间请求一下就好了

------解决方案--------------------
引用:
Quote: 引用:

这样不行的,换一种思路,把压缩包少放一点,比如100个文件,每10个文件打包,然后下载。


关键是有几千上万张的图片啊,就算100个文件分成10个压缩包,怎么一次性下载这10个压缩包呢?


10个压缩包肯定不是一次性发过去的。
而且我觉得你的浏览器接收到压缩包之后,肯定得需要向服务器发出一个信号,告诉服务器压缩包我收到了,如果没收到就需要重新发送。
这算是一个通信的循环吧
------解决方案--------------------
可以先把下载下来,然后写入压缩包。
------解决方案--------------------
也就是希望能做到边打包边下载的效果,有没有人知道这种情况怎么解决呀!  
这个是关键 你想一边打包一边发送给客户。这个估计不好实现吧 发送给客户的文件都是提前JAVA读取的 你中途再往里面写东西 可能是不行的
建议你可以分2个功能按钮 一个是开始打包,然后弹出窗口后台正在打包,大概要多长时间,这个需要调整SESSION 如果要0-3个小时还可以接受 扫描需要打包的文件的总大小/每秒打包的速度
最后打包完成之后提示可以下载了 将下载链接写入数据库也可以 记录这个人操作了操作过  
------解决方案--------------------
这种你只有做延迟,让用户感觉程序在运行。
1、ajax到后台去压缩,弹出层灰色,正在压缩,请稍候.....
2、成功后返回客户端再去下载。
当然你也可以用自己做一个线程池,压缩。然后在去访问。