如果多个客户端始终以相同名称保存,可以同时下载动态创建的文件吗? [重复]

问题描述 投票:0回答:1

我正在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>
python html flask download webserver
1个回答
0
投票

是的,这绝对是一个有效的问题。我一直在努力处理同样的事情,并且以一种保证不存在文件泄漏的方式处理并不容易。

解决这个问题的理想方法是,如果你可以将它们作为文件对象保留,直到它们被烧瓶服务。我正在尝试找到我以前如何做到这一点的代码,但是对于一个我不再工作的公司来说,所以我觉得代码很遗憾。

编辑:看起来你可以使用Flask.send_file()并给它一个像object这样的文件来代替文件路径。对于您来说,困难的部分可能是将png和csv文件呈现给文件对象,而不是将它们保存到磁盘,给定您正在创建它们的库。

© www.soinside.com 2019 - 2024. All rights reserved.