Flask发送文件而不存储在服务器上

时间:2019-02-16 23:53:02

标签: python flask

我希望用户能够下载包含sql查询结果的txt文件。我已经看到有关使用send_fileResponse的答案,但是所有这些答案似乎都要求我存储文件?

目前,我有:

@RateRevisionEndorsements_blueprint.route('/_getEndorsements', methods = ['GET'])
def get_endorsements():
    guid = request.args.get('guid')


    client = Client()

    # Save query results    
    result = client.getEndorsementFile(bookGuid = guid)


    with open('tesult.txt', 'w') as r:
        for i in result:
            r.write(i)

    return send_file("result.txt", as_attachment=True)

生成此路由的按钮有效,并且我没有收到查询结果的问题(当前存储为列表,但是我可以使它达到最佳效果),但是出现错误FileNotFoundError: [Errno 2] No such file or directory: 'C"\\..\\app\\result.txt' 这使我认为我需要将其存储在服务器上的某个位置以进行提取。

2 个答案:

答案 0 :(得分:1)

只需将数据作为streaming response发送即可。确保设置正确的mime类型,以便浏览器启动下载。

答案 1 :(得分:0)

正是send_file发送了已存储的文件。 用

发送
Respone(file,mimetype=“txt/plain”)