在烧录应用程序

时间:2016-07-04 23:45:32

标签: python flask python-pptx

我在Web应用程序中使用Python-pptx,以编程方式创建powerpoint,然后允许用户在最后下载。人们可以上传图像等,然后将它插入到powerpoint中。

效果很好,但是目前我正在将PowerPoint保存到"静态"文件夹,然后使用其文件路径创建下载链接。

理想情况下,我希望永远不会将文件保存到服务器。这是为了防止有关敏感信息的隐私问题。如果人们不必登录也会很棒。只是一种简单,安全的方式来制作powerpoint。

我试图让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

非常感谢任何帮助!这是我的第一个烧瓶应用程序!

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将演示文稿保存到“内存中”文件,大致如下:

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