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

StackOverflow https://stackoverflow.com/questions/3811595

Вопрос

Я использую колбу (на основе 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top