首页 > 怎么做到多文件合并为一个压缩文件下载?

怎么做到多文件合并为一个压缩文件下载?

如百度云。
选择多个文件 统一下载为一个压缩文件。


http://.com/q/1010000000614939#a-1020000000621316


这个问题之前我也想过。

下载文件的时候,发送的请求是:

> GET /xxxx.zip HTTP/1.1
> User-Agent: curl/7.30.0
> Host: pan.baidu.com
> Accept: */*

服务器的回应是:

> Server: nginx
> Date: Wed, 13 Aug 2014 00:27:55 GMT
> Content-Type: application/zip
> Content-Length: 80501624
> {文件数据}

常见的 lighttpd,nginx 服务器可以知道 /xxxx.zip 是磁盘上的哪个文件然后给你找出来,并读取它的内容,然后传回去。

要打包下载,那么就要自己处理这个 /xxxx.zip 的请求,不能用它默认的了。要自己打包一个 zip,然后传回去。

用 python 的 WSGI 来举例:

from subprocess import *

def wsgi(env, sr):
    if env['RAW_URI'] == '/xxxx.zip':
        p = Popen(['zip', '-', 'filea', 'fileb'], stdout=PIPE)        
        sr('200 OK', ['Content-Type', 'application/zip'])
        return p.stdout

这个代码我没试过能不能运行。。不过大概是这样子了。

zip 的参数 - 表示输出到 stdout,打包的文件是 filea,fileb。

【热门文章】
【热门文章】