网页如何实现"这种"多个文件或文件夹打包后提供下载

2012-12-04 10:35:00 +08:00
 takwai
普通案例

目标:百度网盘

选取多个文件或文件夹打包下载,应该是后台打包完后,才提供给用户下载。
因为选取目标总容量大的话,要等待几秒种时间。(下载时能看到这个打包文件的容量大小)


==========
特殊案列

目标:安卓 AirDroid 管理软件(通过 WIFI 用网页管理手机的应用)

当选择手机里全部 应用(约有900M) 或者 音乐(约有600M) 打包下载,会立即弹出个下载窗口。(下载时看不到这个打包文件的容量大小)

==========

特殊案例觉得在内部网络实现好一些,毕竟内部传输速度快。

AirDroid 这种打包下载实现思路是怎么样?有人能指点一下么?
4029 次点击
所在节点    程序员
7 条回复
coosir
2012-12-04 10:59:40 +08:00
网页的话可以在server端打包存放在一个temp目录(php或者python之类都能搞定吧),返回文件地址供下载,然后要注意的就是清理问题
est
2012-12-05 14:29:56 +08:00
zip/rar/gzip/7z都是可以流式打包的。也就是n多文件一小块一小块逐块打包。

由于客户端下载速度远远低于打包速度,所以服务器完全可以实现根据网速一段一段的返回给客户端打包好的文件流。
takwai
2012-12-07 15:16:26 +08:00
@est 感谢提醒,具体代码已经实现了。
manoon
2012-12-07 16:32:56 +08:00
@takwai 求分享. 这种边打包边提供下载如何实现?
takwai
2012-12-07 20:51:26 +08:00
ZRJ
2012-12-07 22:54:59 +08:00
@est 如果是这种流式,但是不压缩,纯打包的话,cpu 会很高吗。。
takwai
2012-12-08 09:54:39 +08:00
@ZRJ 目前代码实现是纯打包没压缩的,之前参考微软网站例子 http://support.microsoft.com/kb/812406 单独读取一个文件提供下载,文件太大的话还是会造成CPU占用高的问题,目前还没找到更好解决CPU占用高的问题,每次 Flush() 到客户端后仅仅是用线程睡眠xxx毫秒方法处理了一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/54031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX