旅好きエンジニアのメモ

旅のこと映画、統計、会計、プログラミングなど、気の向くままに語ります

bottleでファイルダウンロード機能を追加する

bottleでファイルダウンロード機能を追加するのは結構簡単です

とりあえず下記のような感じでダウンロード出来るようになります・

ファイル構成

  app
  ├── controller
  │     └── static.py
  │
  └── static
         ├── csv
         │   └── sample.csv
         └── img
             └── samle.jpg

htmlタグ

<a href="/download/csv/sample.csv" download="sample.csv">sample.imgをダウンロード</a>

controller/static.py

from bottle import route, static_file

@route('/download/:path#(csv|img)\/.+#')
def download_static(path):
    return static_file(path, root='app/static', download=True)