web-dev-qa-db-ja.com

python Flaskを使用している場合、ダウンロードするオブジェクトを書き出すにはどうすればよいですか?

Flaskを使用して、フォアマンを実行しています。メモリ内に作成したデータを使用して、ユーザーがこのデータをテキストファイルにダウンロードできるようにします。書き込みたくないデータをローカルディスク上のファイルに出力し、ダウンロードできるようにします。

私はPythonを初めて使用します。メモリ内にファイルオブジェクトを作成してから、応答ヘッダーを設定すると思いました。

19
swidnikk

ファイルをディスクに保存せずにクライアントにストリーミングする方法については、Flaskのドキュメントの「パターン」セクション、具体的には ストリーミングに関するセクション で説明しています。基本的に、あなたがすることはあなたのイテレータを包む本格的な Response オブジェクトを返すことです:

from flask import Response

# construct your app

@app.route("/get-file")
def get_file():
    results = generate_file_data()
    generator = (cell for row in results
                    for cell in row)

    return Response(generator,
                       mimetype="text/plain",
                       headers={"Content-Disposition":
                                    "attachment;filename=test.txt"})
37
Sean Vieira