@kolomiec_artiom

Как исправить ошибку при использовании send_file во Flask?

Доброй ночи! Пытаюсь передать файл пользователю не со своего сервера, выступая "посредником"

# Download from provided URL.
@app.route('/<path:url>')
def download(url):
    req = requests.get(url, stream=True)
    return send_file(stream_with_context(req.iter_content(1024)), mimetype='mp3')


Когда пользователь переходит по ссылке mysite.ru/anothersite.mp3 - у него должна начинаться загрузка файла с чужого сервера, но у меня возникает ошибка:
AttributeError: 'generator' object has no attribute 'read'
. Как ее можно исправить?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Flask
Седой и строгий
Можно попробовать так
response = Response(stream_with_context(req.iter_content()), mimetype='audio/mpeg')
response.headers['Content-Disposition'] = 'attachment; filename=some_file_name.mp3'
return response

Но не исключено, что апстрим всё-таки придётся сначала вытянуть полностью, а потом уж отдать клиенту.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы