2010-09-28 12 views
16

Używam Flask (na podstawie Werkzeug), który używa Pythona.Flask/Werkzeug jak dołączyć nagłówek długości treści HTTP do pobrania pliku

Użytkownik może pobrać plik, używam send_from_directory-function.

Jednak podczas pobierania pliku nagłówek HTTP content-length nie jest ustawiony. Tak więc użytkownik nie ma pojęcia, jak duży jest pobrany plik.

Mogę użyć os.path.getsize(FILE_LOCATION) w Pythonie, aby uzyskać rozmiar pliku (w bajtach), ale nie mogę znaleźć sposobu na ustawienie nagłówka content-length w kolbie.

Wszelkie pomysły?

Odpowiedz

36

Od wersji 0.6 kanoniczny sposób dodawania nagłówków do obiektu odpowiedzi odbywa się za pomocą metody make_response (patrz:).

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

Musiałem to również, ale dla każdego żądania, więc oto co zrobiłem (na podstawie dokumentu):

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