背景 链接到标题 在之前的一篇博客《HTTP Content-Length 学习》 中提到自己踩了一个坑,就是 content-length 与实际大小不匹配导致文件下载失败,在解决过程中用到了 zipstreamer ,今天来看看 zipstreamer 是如何工作的。
zipfile 链接到标题 Python 标准库中提供了 zipfile 用来对 Zip 文件进行操作,可以进行 Zip 的创建、写入、读取、解压等动作,但是 zipfile 只能对文件进行操作,没办法传入 stream,所以能做的操作有限。
示例 链接到标题 import zipfile def test(): for i in range(1, 4): f = open("file" + str(i) + ".txt", 'w') f.write(str(i)) f.close() f = zipfile.ZipFile('filename.zip', 'w', zipfile.ZIP_DEFLATED) f.write('file1.txt') f.write('file2.txt') f.write('file3.txt') f.close() f = zipfile.ZipFile('filename.zip') f.extractall() f.close() if __name__ == "__main__": test() zipstreamer 链接到标题 在提供文件下载接口时,有一个比较常见的需求是传过来一个 stream,然后我们要将 stream 作为 Zip 中的一个文件转发出去,实时下载,这时候就需要 zipstreamer 来实现了。