我有一个简单的方法,可以返回其中带有.pdf文件的zip存档。 这是生成zip归档文件并将其返回的代码的一部分:
pdf_file = HTML(string=rendered_html, base_url=request.build_absolute_uri()).write_pdf()
temp = tempfile.TemporaryFile()
archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)
with archive:
archive.writestr('report.pdf', pdf_file)
wrapper = FileWrapper(temp)
http_response = HttpResponse(wrapper, content_type='application/zip')
http_response['Content-Disposition'] = 'attachment; filename=report.zip'
return http_response
问题是我得到0字节的zip存档响应。我在做什么错了?
已更新
我也将这两行代码添加到return
之前,但是得到seek of closed file
http_response['Content_Length'] = temp.tell()
temp.seek(0)
答案 0 :(得分:0)
感谢@Will Keeling的帮助
我通过在temp.seek()
之前添加HttpResponse
并删除http_response['Content_Length'] = temp.tell()
来解决我的问题,因为关闭后我们无法使用temp。