Baňka / Werkzeug jak připojit záhlaví HTTP Content-Length do souboru ke stažení

hlasů
16

Já používám baňky (na základě Werkzeug), který používá Python.

Uživatel si může stáhnout soubor, jsem pomocí send_from_directory-function .

Nicméně když ve skutečnosti stahování souboru, záhlaví HTTP content-lengthnení nastaven. Takže uživatel nemá žádnou představu, jak velký byl soubor stažen.

Mohu použít os.path.getsize(FILE_LOCATION)v Pythonu, aby velikost souboru (v bajtech), ale nemůže najít způsob, jak nastavit content-lengthzáhlaví v baňce.

Nějaké nápady?

Položena 28/09/2010 v 10:55
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
11

Věřím, že bych něco takového (nevyzkoušený):

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

Viz: Werkzug v záhlaví objektu a objekt baňky odpověď .

Odpovězeno 28/09/2010 v 16:01
zdroj uživatelem

hlasů
36

Vzhledem k tomu, verze 0.6 kanonický způsob přidání záhlaví do objektu reakce se provádí pomocí make_responsemetody (viz baňka dokumenty ).

def index():
    response = make_response(render_template('index.html', foo=42))
    response.headers['X-Parachutes'] = 'parachutes are cool'
    return response
Odpovězeno 17/02/2012 v 22:24
zdroj uživatelem

hlasů
38

Potřeboval jsem to také, ale za každých žádostí, takže tady je to, co jsem udělal (na základě doc):

@app.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response
Odpovězeno 28/03/2012 v 14:29
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more