gpt4 book ai didi

Python/Django - 我可以创建多个类似 pdf 文件的对象,将它们压缩并作为附件发送吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:36 25 4
gpt4 key购买 nike

我正在使用 Django 创建一个 Web 应用程序,其中输入了一些参数并创建了绘图。我想要一个链接,用于下载 zip 文件中的所有图。为此,我正在编写一个将创建所有图的 View (我已经编写了创建每个图并显示它们的 View ),然后将它们压缩,将 zip 文件保存为响应对象。

我可以这样做的一种方法是创建每个图,将其作为 pdf 文件保存到磁盘,然后在最后将它们全部压缩为响应。但是,如果可能的话,我想避免保存到磁盘吗?

干杯。

最佳答案

根据 Krzysiek 关于使用 StringIO 的建议,这对我有用。这里的canvas是matplotlib创建的canvas对象。

#Create the file-like objects from canvases
file_like_1 = StringIO.StringIO()
file_like_2 = StringIO.StringIO()
#... etc...
canvas_1.print_pdf(file_like_1)
canvas_2.print_pdf(file_like_2)
#...etc....

#NOW create the zipfile
response = HttpResponse(mimetype='application/zip')
response['Content-Disposition'] = 'filename=all_plots.zip'

buff = StringIO.StringIO()
archive = zipfile.ZipFile(buff,'w',zipfile.ZIP_DEFLATED)
archive.writestr('plot_1.pdf',file_like_1.getvalue())
archive.writestr('plot_2.pdf',file_like_2.getvalue())
#..etc...
archive.close()
buff.flush()
ret_zip = buff.getvalue()
buff.close()
response.write(ret_zip)
return response

所有这些的压缩部分取自 https://code.djangoproject.com/wiki/CookBookDynamicZip

关于Python/Django - 我可以创建多个类似 pdf 文件的对象,将它们压缩并作为附件发送吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14334976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com