Flask/Werkzeug ファイルのダウンロードに HTTP コンテンツ長ヘッダーを添付する方法
-
26-09-2019 - |
質問
私はPythonを使用するFlask(Werkzeugに基づく)を使用しています。
ユーザーはファイルをダウンロードできます。私は send_from_directory
-関数.
ただし、実際にファイルをダウンロードするときに、HTTP ヘッダー content-length
は設定されていません。そのため、ユーザーはダウンロードされるファイルの大きさがわかりません。
使うことができます os.path.getsize(FILE_LOCATION)
Python でファイル サイズ (バイト単位) を取得しますが、設定する方法が見つかりません。 content-length
Flask のヘッダー。
何か案は?
解決
次のようなことをすると思います(未テスト):
from flask import Response
response = Response()
response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))
他のヒント
バージョン 0.6 以降、応答オブジェクトにヘッダーを追加する正規の方法は、 make_response
メソッド (参照 フラスコのドキュメント).
def index():
response = make_response(render_template('index.html', foo=42))
response.headers['X-Parachutes'] = 'parachutes are cool'
return response
私もこれを必要ですが、すべてのリクエストに対して、ので、ここでは(ドキュメントに基づいて)私がやったことだ。
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
return response
所属していません StackOverflow