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