def send_zipfile(request):
20 """
21 Create a ZIP file on disk and transmit it in chunks of 8KB,
22 without loading the whole file into memory. A similar approach can
23 be used for large dynamic PDF files.
24 """
25 temp = tempfile.TemporaryFile()
26 archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)
27 for index in range(10):
28 filename = __file__ # Select your files here.
29 archive.write(filename, 'file%d.txt' % index)
30 archive.close()
31 wrapper = FileWrapper(temp)
32 response = HttpResponse(wrapper, content_type='application/zip')
33 response['Content-Disposition'] = 'attachment; filename=test.zip'
34 response['Content-Length'] = temp.tell()
35 temp.seek(0)
36 return response
这里边我真是不懂archive.write(filename, 'file%d.txt' % index)为什么要加txt这句。
另外我运行就报错说是I/O调用关闭文件。求大神解答
两个思路,不保存zip文件用base64流返回;保存zip文件用文件stream返回后删文件;response都是一样的(搜http 文件返回);我不是大神。
<p>archive.write(filename, 'file%d.txt' % index) 应该只是模拟打包10个文件而已,这个write的第一个参数应该是本地文件名,第二个应该是压缩包里的文件名,自己根据需要改一下就行了</p>
谢谢两位师傅,解决了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。