Flask/Werkzeug Come allegare l'intestazione a lunghezza del contenuto HTTP al download del file
-
26-09-2019 - |
Domanda
Sto usando il pallone (basato su Werkzeug) che utilizza Python.
L'utente può scaricare un file, sto usando il send_from_directory
-funzione.
Tuttavia, quando si scarica effettivamente il file, l'intestazione HTTP content-length
non è impostato. Quindi l'utente non ha idea di quanto sia grande il file scaricato.
posso usare os.path.getsize(FILE_LOCATION)
in Python per ottenere la dimensione del file (in byte), ma non riesce a trovare un modo per impostare il content-length
Intestazione in pallone.
Qualche idea?
Soluzione
Credo che avresti fatto qualcosa di simile (non testata):
from flask import Response
response = Response()
response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))
See: di Werkzug intestazioni oggetto e di Flask oggetto Response .
Altri suggerimenti
Dalla versione 0.6 il modo canonico di aggiungere intestazioni a un oggetto risposta è tramite il metodo make_response
(vedi Flask docs ).
def index():
response = make_response(render_template('index.html', foo=42))
response.headers['X-Parachutes'] = 'parachutes are cool'
return response
Ho bisogno di questo anche, ma per ogni richiesta, quindi ecco quello che ho fatto (sulla base del documento):
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
return response