Flask/Werkzeug如何为文件下载添加HTTP内容长度头
我正在使用Flask(基于Werkzeug),它是用Python写的。
用户可以下载一个文件,我使用的是send_from_directory
函数。
但是在实际下载文件时,HTTP头中的content-length
没有设置。所以用户不知道正在下载的文件有多大。
我可以用Python中的os.path.getsize(FILE_LOCATION)
来获取文件大小(以字节为单位),但找不到在Flask中设置content-length
头的方法。
有什么想法吗?
3 个回答
39
从0.6版本开始,给响应对象添加头部信息的标准方法是通过 make_response
这个方法(详细信息可以查看 Flask文档)。
def index():
response = make_response(render_template('index.html', foo=42))
response.headers['X-Parachutes'] = 'parachutes are cool'
return response
40
我也需要这个,不过是为了每一个请求,所以我做了以下这些(根据文档的内容):
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
return response
15
我觉得你可以这样做(这个代码没测试过):
from flask import Response
response = Response()
response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))