我正在使用使用Python的Flask(基于Werkzeug)。
用户可以下载文件,我正在使用send_from_directory
-function。
但是,在实际下载文件时,未设置HTTP标头content-length
。因此,用户不知道正在下载的文件有多大。
我可以在Python中使用os.path.getsize(FILE_LOCATION)
来获取文件大小(以字节为单位),但无法找到在Flask中设置content-length
标头的方法。
有什么想法吗?
答案 0 :(得分:38)
我也需要这个,但是对于每个请求,所以这就是我所做的(基于文档):
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
return response
答案 1 :(得分:37)
从版本0.6开始,将标头添加到响应对象的规范方法是通过make_response
方法(参见Flask docs)。
def index():
response = make_response(render_template('index.html', foo=42))
response.headers['X-Parachutes'] = 'parachutes are cool'
return response
答案 2 :(得分:11)
我相信你会做这样的事情(未经测试):
from flask import Response
response = Response()
response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))