Flask - отправить байтовый загружаемый файл - PullRequest
0 голосов
/ 09 мая 2020

Итак, я знаю, что вы можете использовать метод flask send_file, в котором вы выбираете путь на своем компьютере, но в моем случае мне нужно читать файл в байтах (потому что я отправляю файл из другого python -client) Итак, я должен отправить его в байтах, а затем сервер получит его. но мне нужно сделать так, чтобы какой-то URL загрузил вам этот файл, могу я просто вернуть байты, и он автоматически загрузит файл? так примерно так:

f = b""
with open("/somefile.txt", "rb") as some_file:
    f = some_file.read()

return f # and make this download the file that I read

1 Ответ

0 голосов
/ 09 мая 2020

Ниже приведен пример, измененный с: https://flask.palletsprojects.com/en/1.1.x/patterns/streaming/
Вам нужна функция генератора, которая выдает данные, а затем вызывает эту функцию из объекта Response.

from flask import Response 

@app.route("/")
def index():
    def generate():
        with open('somefile.txt','rb') as f:
            for row in f:
                yield row 
    return Response(generate(), mimetype='text/csv')

Затем, когда вы посещаете этот маршрут в браузере, вам сразу же предлагается загрузить потоковые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...