在烧瓶应用程序中下载由 python-pptx 创建的 PPTX
downloading PPTX created by python-pptx in a flask app
我在网络应用程序中使用 Python-pptx,它以编程方式创建一个 powerpoint,然后允许用户在最后下载。人们可以上传图片等,它会为他们将其插入到 powerpoint 中。
效果很好,但目前我正在将 PowerPoint 保存到 "static" 文件夹,然后使用其文件路径创建下载 link。
理想情况下,我希望文件永远不会保存到服务器。这是为了防止有关敏感信息的隐私问题。如果人们不必登录,那就太好了。这只是制作幻灯片的一种简单、安全的方式。
我试图让 send_file 工作但无济于事。我认为这是解决方案。
这是我尝试过的:
prs = Presentation()
file_name = 'static/' + file_name + '.pptx'
root_dir = os.path.dirname(os.getcwd())
path = os.path.join(root_dir, 'project', 'static', 'test.pptx')
return send_file(prs, as_attachment=True)
# also tried:
# return send_file(path, mimetype='applicationvnd.openxmlformats-officedocument.presentationml.presentation', as_attachment=True)
# which loads the page, but doesn’t trigger a download,just loads a blank page.
# plus, it is referencing a file path which means the file was saved on the server
非常感谢任何帮助!这是我的第一个烧瓶应用程序!
提前致谢!
您可以将演示文稿保存到 "in-memory" 文件,大致如下:
from StringIO import StringIO
out_file = StringIO()
prs.save(out_file)
python-pptx
喜欢像 StringIO 这样的内存流就好了,并且会很乐意将文件写入其中,就像它是一个磁盘文件一样。然后您就可以像打开磁盘文件句柄一样发送文件进行下载了。
此处的文档中还有一些内容:http://python-pptx.readthedocs.io/en/latest/user/presentations.html#opening-a-file-like-presentation
我在网络应用程序中使用 Python-pptx,它以编程方式创建一个 powerpoint,然后允许用户在最后下载。人们可以上传图片等,它会为他们将其插入到 powerpoint 中。
效果很好,但目前我正在将 PowerPoint 保存到 "static" 文件夹,然后使用其文件路径创建下载 link。
理想情况下,我希望文件永远不会保存到服务器。这是为了防止有关敏感信息的隐私问题。如果人们不必登录,那就太好了。这只是制作幻灯片的一种简单、安全的方式。
我试图让 send_file 工作但无济于事。我认为这是解决方案。
这是我尝试过的:
prs = Presentation()
file_name = 'static/' + file_name + '.pptx'
root_dir = os.path.dirname(os.getcwd())
path = os.path.join(root_dir, 'project', 'static', 'test.pptx')
return send_file(prs, as_attachment=True)
# also tried:
# return send_file(path, mimetype='applicationvnd.openxmlformats-officedocument.presentationml.presentation', as_attachment=True)
# which loads the page, but doesn’t trigger a download,just loads a blank page.
# plus, it is referencing a file path which means the file was saved on the server
非常感谢任何帮助!这是我的第一个烧瓶应用程序!
提前致谢!
您可以将演示文稿保存到 "in-memory" 文件,大致如下:
from StringIO import StringIO
out_file = StringIO()
prs.save(out_file)
python-pptx
喜欢像 StringIO 这样的内存流就好了,并且会很乐意将文件写入其中,就像它是一个磁盘文件一样。然后您就可以像打开磁盘文件句柄一样发送文件进行下载了。
此处的文档中还有一些内容:http://python-pptx.readthedocs.io/en/latest/user/presentations.html#opening-a-file-like-presentation