这个问题之前我也想过。 下载文件的时候,发送的请求是: > 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。
这个问题之前我也想过。
下载文件的时候,发送的请求是:
服务器的回应是:
常见的 lighttpd,nginx 服务器可以知道 /xxxx.zip 是磁盘上的哪个文件然后给你找出来,并读取它的内容,然后传回去。
要打包下载,那么就要自己处理这个 /xxxx.zip 的请求,不能用它默认的了。要自己打包一个 zip,然后传回去。
用 python 的 WSGI 来举例:
这个代码我没试过能不能运行。。不过大概是这样子了。
zip 的参数 - 表示输出到 stdout,打包的文件是 filea,fileb。