2010-09-28 11 views
16

Estoy usando Flask (basado en Werkzeug) que usa Python.Flask/Werkzeug cómo adjuntar el encabezado HTTP content-length al archivo download

El usuario puede descargar un archivo, estoy usando el send_from_directory-function.

Sin embargo, al descargar realmente el archivo, no se establece el encabezado HTTP content-length. Entonces el usuario no tiene idea de cuán grande es el archivo que se está descargando.

puedo usar os.path.getsize(FILE_LOCATION) en Python para obtener el tamaño del archivo (en bytes), pero no puedo encontrar una manera de establecer la cabecera content-length en el frasco.

¿Alguna idea?

Respuesta

36

Desde la versión 0.6, la manera canónica de agregar encabezados a un objeto de respuesta es mediante el método make_response (consulte Flask docs).

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

Necesitaba esto también, pero por cada solicitud, por lo que aquí es lo que hice (basado en el doc):

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