Flask / Werkzeug Как прикрепить HTTP-заголовок длины содержимого в файл
-
26-09-2019 - |
Вопрос
Я использую колбу (на основе Werkzeug), который использует Python.
Пользователь может загрузить файл, я использую send_from_directory
-функция.
Однако, когда фактически загружаете файл, заголовок HTTP content-length
не установлен. Поэтому пользователь не имеет представления, насколько большой файл загружается.
я могу использовать os.path.getsize(FILE_LOCATION)
в Python, чтобы получить размер файла (в байтах), но не могу найти способ установить content-length
Заголовок в колбе.
Есть идеи?
Решение
Я верю, что вы сделаете что-то вроде этого (непроверенного):
from flask import Response
response = Response()
response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))
Видеть: Заголовки Werkzug's а также Объект ответа колба.
Другие советы
Поскольку версия 0.6 канонический способ добавления заголовков на объект ответа - это make_response
Метод (см Флэкские документы).
def index():
response = make_response(render_template('index.html', foo=42))
response.headers['X-Parachutes'] = 'parachutes are cool'
return response
Мне нужно это также, но для всех запросов, поэтому вот что я сделал (на основе DOC):
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
return response