19

Python を使用する Flask (Werkzeug ベース) を使用しています。

ユーザーはファイルをダウンロードできます。私はsend_from_directory-functionを使用しています。

ただし、実際にファイルをダウンロードするときは、HTTP ヘッダーcontent-lengthは設定されていません。そのため、ユーザーは、ダウンロードされたファイルのサイズがわかりません。

Python で使用してファイル サイズ (バイト単位) を取得できますが、Flask でヘッダーos.path.getsize(FILE_LOCATION)を設定する方法が見つかりません。content-length

何か案は?

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 docsを参照)。

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 に答える