Python Bottleでテキストファイルをダウンロードさせる
はてなブログのエクスポーターを作っているとBottleでファイルをダウンロードさせる方法に悩んだ。簡単に解決したが同様の記事が見つからなかったため記事にする。
まずタイトルで「テキストファイルをダウンロードさせる」としている通り、この記事は既存のバイナリファイルをダウンロードさせるのではなく、テキストをPythonコード内で生成し、そのテキストをテキストファイルとしてダウンロードさせることにする。既存のバイナリファイルであればBottleの「static_file()」でダウンロードさせられるし、Pythonで生成したバイナリファイルであればStringIOでストリームを吐き出せば行けるかと思う(未確認)。
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (127件) を見る
コードは短いが以下の通り。
#!/usr/bin/python # coding: UTF-8 from bottle import response, get, post, run @get( "/") def index(): return "<form action='' method='post'><input type='submit' value='ダウンロード'></form>" @post( "/") def index_post(): response.content_type = "application/octet-stream" response.headers["Content-Disposition"] = "attachment; filename='download.txt'" return "this file is download file." if __name__ == "__main__": run( host="localhost", port="8082")
Bottleのresponse()を直接いじってやればいいだけのことであった。やはりBottleは行けてる。Djangoを使うまでもなくBottleとPeeweeで小さなシステムなら組める。
- 作者: 辻真吾
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/24
- メディア: 大型本
- 購入: 19人 クリック: 199回
- この商品を含むブログ (40件) を見る
パーフェクトPython (PERFECT SERIES 5)
- 作者: Pythonサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2013/03/05
- メディア: 大型本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (16件) を見る
- 作者: Tarek Ziade,稲田直哉,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/05/28
- メディア: 大型本
- 購入: 33人 クリック: 791回
- この商品を含むブログ (91件) を見る
- 作者: ビープラウド
- 出版社/メーカー: 秀和システム
- 発売日: 2012/03/26
- メディア: 単行本
- 購入: 6人 クリック: 765回
- この商品を含むブログ (27件) を見る