Pregunta

Estoy usando Frasco (basado en Werkzeug), que utiliza Python.

El usuario puede descargar un archivo, estoy usando el send_from_directory -Función .

Sin embargo, cuando en realidad la descarga del archivo, el encabezado HTTP content-length no está ajustado. Por lo que el usuario no tiene idea de lo grande que es el archivo que se descarga es.

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

¿Alguna idea?

¿Fue útil?

Solución

Creo que haría algo como esto (no probado):

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

Ver: de Werkzug encabezados objeto y frasco de objeto Respuesta .

Otros consejos

Desde la versión 0.6 de la forma canónica de añadir cabeceras a un objeto de respuesta es a través del método make_response (ver Frasco docs ).

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

Yo necesitaba esto también, pero por cada solicitud, así que aquí está lo que hice (basado en el doc):

@app.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top