V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
takwai
V2EX  ›  程序员

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

  •  
  •   takwai · 2012-12-04 10:35:00 +08:00 · 4000 次点击
    这是一个创建于 4376 天前的主题,其中的信息可能已经有所发展或是发生改变。
    普通案例

    目标:百度网盘

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


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

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

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

    ==========

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

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

    由于客户端下载速度远远低于打包速度,所以服务器完全可以实现根据网速一段一段的返回给客户端打包好的文件流。
    takwai
        3
    takwai  
    OP
       2012-12-07 15:16:26 +08:00
    @est 感谢提醒,具体代码已经实现了。
    manoon
        4
    manoon  
       2012-12-07 16:32:56 +08:00
    @takwai 求分享. 这种边打包边提供下载如何实现?
    ZRJ
        6
    ZRJ  
       2012-12-07 22:54:59 +08:00
    @est 如果是这种流式,但是不压缩,纯打包的话,cpu 会很高吗。。
    takwai
        7
    takwai  
    OP
       2012-12-08 09:54:39 +08:00
    @ZRJ 目前代码实现是纯打包没压缩的,之前参考微软网站例子 http://support.microsoft.com/kb/812406 单独读取一个文件提供下载,文件太大的话还是会造成CPU占用高的问题,目前还没找到更好解决CPU占用高的问题,每次 Flush() 到客户端后仅仅是用线程睡眠xxx毫秒方法处理了一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5266 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:51 · PVG 11:51 · LAX 19:51 · JFK 22:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.