开发者社区> 问答> 正文

本人使用django1.11.16做了一个在线相册系统,现在想下载选中图片,想要?400报错

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调用关闭文件。求大神解答

展开
收起
爱吃鱼的程序员 2020-06-06 10:45:10 725 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        两个思路,不保存zip文件用base64流返回;保存zip文件用文件stream返回后删文件;response都是一样的(搜http 文件返回);我不是大神。 
                    
    
                        <p>archive.write(filename, 'file%d.txt' % index) 应该只是模拟打包10个文件而已,这个write的第一个参数应该是本地文件名,第二个应该是压缩包里的文件名,自己根据需要改一下就行了</p>
                    
    
                            谢谢两位师傅,解决了 
    
    2020-06-06 10:45:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
附件下载测试 立即下载
宏光S导航安装教程 立即下载
函数计算最佳实践:快速开发一个分布式 Puppeteer 网页截图服务 立即下载