Flaskでファイルダウンロードを実現してみる

python Python

この記事の内容

この記事では、PythonのFlaskを使用して、ファイルをダウンロードを実現する方法について紹介します。

実装方法

今回は、flaskの実装を記載したmain.pyと、同階層のディレクトリに、ダウンロードさせたいtest.zipを配置し、/downloadzipにアクセスがあった場合、ファイルをダウンロードするプログラムを実装します。

そのため、事前にmain.pyと同じ階層にtest.zipのファイルを配置しておいてください。

main.pyの内容は以下の通りです。

from flask import Flask, Response, make_response

app = Flask(__name__)

@app.route("/downloadzip")
def downloadzip():
    response = make_response()
    response.data  = open('test.zip', "rb").read()
    response.headers['Content-Type'] = 'application/octet-stream'
    response.headers['Content-Disposition'] = 'attachment; filename=test.zip'
    return response

if __name__ == "__main__":
    app.run(debug=True)

open(‘test.zip’, “rb”).read()で、zipファイルの情報を読み込み、レスポンスで返すデータに代入します。あとは、response.headersの設定でをしています。filename=test.zipの部分で、ダウンロードする際の名前を指定することができます。

ダウンロード後

コメント