这个问题在这里已有答案:
我正在Flask中创建一个Web应用程序,它接受输入数据集和导入的python脚本中的算法然后操纵它。该脚本生成并物理保存.csv表(“zscore_data.csv”)和.png图像(“zplot.png”),然后用户可以下载该表。因此,每次上传新数据集时都会覆盖这些内容。
如果多个用户同时上传他们的数据集怎么办?用户X是否会意外下载为用户Y生成的文件? (没有与用户关联的用户帐户,文件只存储在下载文件夹中)。
我担心这会引起问题。任何帮助,将不胜感激!
为了说明,在我的script.py“zscore_data.csv”中保存为static / downloads:
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>
是的,这绝对是一个有效的问题。我一直在努力处理同样的事情,并且以一种保证不存在文件泄漏的方式处理并不容易。
解决这个问题的理想方法是,如果你可以将它们作为文件对象保留,直到它们被烧瓶服务。我正在尝试找到我以前如何做到这一点的代码,但是对于一个我不再工作的公司来说,所以我觉得代码很遗憾。
编辑:看起来你可以使用Flask.send_file()并给它一个像object这样的文件来代替文件路径。对于您来说,困难的部分可能是将png和csv文件呈现给文件对象,而不是将它们保存到磁盘,给定您正在创建它们的库。