Flask/Werkzeug ファイルのダウンロードに HTTP コンテンツ長ヘッダーを添付する方法

StackOverflow https://stackoverflow.com/questions/3811595

質問

私は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)))

見る: Werkzug の Headers オブジェクト そして FlaskのResponseオブジェクト.

他のヒント

バージョン 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top