Flask/Werkzeug, как прикрепить HTTP-заголовок длины содержимого к загрузке файла

Я использую Flask (на основе Werkzeug), который использует Python.

Пользователь может скачать файл, я использую send_from_directory -функция

Однако при фактической загрузке файла заголовок HTTP content-length не установлен. Таким образом, пользователь понятия не имеет, насколько велик загружаемый файл.

я могу использовать os.path.getsize(FILE_LOCATION) в Python, чтобы получить размер файла (в байтах), но не может найти способ установить content-length Заголовок в колбе.

Есть идеи?

3 ответа

Решение

Я полагаю, вы бы сделали что-то вроде этого (не проверено):

from flask import Response
response = Response()
response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))

Смотрите: объект заголовков Werkzug и объект ответа Flask.

Мне это тоже нужно, но для каждого запроса, так что вот что я сделал (на основе документа):

@app.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response

Начиная с версии 0.6 канонический способ добавления заголовков к объекту ответа - через make_response метод (см. документы колбу).

def index():
    response = make_response(render_template('index.html', foo=42))
    response.headers['X-Parachutes'] = 'parachutes are cool'
    return response
Другие вопросы по тегам