我正在Flask中创建一个web应用程序,它接受导入的python脚本中的输入数据集和算法,然后对其进行操作。该脚本生成并以物理方式保存.csv表("zscore_data.csv")和.png图像("zplot.png"),然后用户可以下载它们。因此,本质上,每次上传新数据集时都会覆盖这些数据集。
如果多个用户同时上传他们的数据集,该怎么办?用户X是否会意外下载为用户Y生成的文件?(没有与用户关联的用户帐户,文件只是存储在downloads文件夹中)。
我担心这会在以后引起问题。任何帮助都将不胜感激!
为了说明这一点,在我的script.py中,"zscore_data.csv“被保存到静态/下载:
zscore_csv = zscore_df.to_csv("static/downloads/zscore_data.csv", index=False)
在results.html中提供了一个下载链接:
<a href="{{ url_for('static', filename='downloads/zscore_data.csv') }}" class="link" download><strong>Z-Score Data (.csv)</strong></a>
发布于 2019-04-08 22:04:13
是的,这绝对是一个合理的担忧。我一直在为同样的事情而挣扎,但要以一种保证不会有文件泄漏的方式来处理它并不容易。
处理这个问题的理想方法是,在flask为它们提供服务之前,您可以将它们保留为文件对象。我试图找到我以前是如何做到这一点的代码,但它是为一家我不再工作的公司,所以我认为代码已经很遗憾地消失了。
编辑:看起来你只需要使用Flask.send_file()并给它一个类似于object的文件来代替文件路径。对于您来说,最困难的部分可能是将png和csv文件都呈现为文件对象,而不是将它们保存到磁盘,因为您用来创建它们的库。
https://stackoverflow.com/questions/55582258
复制