可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am using Flask (based on Werkzeug) which uses Python.
The user can download a file, I'm using the send_from_directory
-function.
However when actually downloading the file, the HTTP header content-length
is not set. So the user has no idea how big the file being downloaded is.
I can use os.path.getsize(FILE_LOCATION)
in Python to get the file size (in bytes), but cannot find a way to set the content-length
header in Flask.
Any ideas?
回答1:
I believe you'd do something like this (untested):
from flask import Response response = Response() response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))
See: Werkzug's Headers object and Flask's Response object.
回答2:
I needed this also, but for every requests, so here's what I did (based on the doc) :
@app.after_request def after_request(response): response.headers.add('Access-Control-Allow-Origin', '*') return response
回答3:
Since version 0.6 the canonical way to add headers to a response object is via the make_response
method (see Flask docs).
def index(): response = make_response(render_template('index.html', foo=42)) response.headers['X-Parachutes'] = 'parachutes are cool' return response