按照Flask最佳做法下载CSV文件

时间:2019-05-06 14:55:34

标签: python file flask sqlalchemy

现在,我有一个flask应用程序,其中的部分功能允许我选择日期范围,并查看来自该选定日期范围的sql数据库中的数据。然后,我可以单击一个按钮,并将其导出到一个csv文件,该文件仅保存在flask项目目录中。我希望用户能够下载此csv文件。我想知道用户下载动态csv文件的最佳做法。我应该send_file()然后在用户下载后删除该文件,因为不应该保存此数据,并且用户将不再使用该文件。应该将文件保存到数据库然后从数据库中删除吗?还是可以将其保存在flask目录中?如果可能的话,请提供见解,非常感谢。

1 个答案:

答案 0 :(得分:2)

@brunns指出了正确的方向。

您不必将文件保存在数据库或文件结构中或任何地方。它将根据用户请求在内存中创建。

对于d pdf和d csv文件,我都使用django完成了,它也与flask一起使用。基础都一样。

对于python3使用io.StringIO,对于python2使用StringIO

from io import StringIO
import csv
from flask import make_response

@app.route('/download')
def post(self):
    si = StringIO.StringIO()
    cw = csv.writer(si)
    cw.writerows(csvList)
    output = make_response(si.getvalue())
    output.headers["Content-Disposition"] = "attachment; filename=export.csv"
    output.headers["Content-type"] = "text/csv"
    return output

礼貌:vectorfrog