19

我正在使用使用 Python 的 Flask(基于 Werkzeug)。

用户可以下载文件,我正在使用send_from_directory-function

但是,在实际下载文件时,content-length并没有设置 HTTP 标头。所以用户不知道下载的文件有多大。

我可以os.path.getsize(FILE_LOCATION)在 Python 中使用来获取文件大小(以字节为单位),但找不到content-length在 Flask 中设置标头的方法。

有任何想法吗?

4

3 回答 3

40

我也需要这个,但是对于每个请求,这就是我所做的(基于文档):

@app.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response
于 2012-03-28T13:29:43.637 回答
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
于 2012-02-17T21:24:27.063 回答
15

我相信你会做这样的事情(未经测试):

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

请参阅:Werkzug 的 Headers 对象Flask 的 Response 对象

于 2010-09-28T15:01:23.157 回答