Я использую Flask и работаю с мастером. Я данные, которые я построил в памяти, и я хочу, чтобы пользователь мог загрузить эти данные в текстовом файле. Я не хочу записывать данные в файл на локальном диске и делать его доступным для загрузки.
Я новичок в питоне. Я думал, что создам какой-нибудь файловый объект в памяти, а затем установим заголовок ответа, может быть?
Ответ 1 · рейтинг 39 · Sean Vieira
Потоковая передача файлов клиенту без сохранения их на диск описана в разделе "Шаблоны" документации 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"})