2010-09-28 3 views
16

Я использую Flask (на основе Werkzeug), который использует Python.Flask/Werkzeug Как подключить HTTP-длину заголовка к файлу загрузить

Пользователь может загрузить файл, я использую send_from_directory-function.

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

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

Любые идеи?

ответ

10

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

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

См: Werkzug's Headers object и Flask's Response object.

36

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

def index(): 
    response = make_response(render_template('index.html', foo=42)) 
    response.headers['X-Parachutes'] = 'parachutes are cool' 
    return response 
38

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

@app.after_request 
def after_request(response): 
    response.headers.add('Access-Control-Allow-Origin', '*') 
    return response 
Смежные вопросы