ruby(Rails)でzipファイルを扱うには、今時は"rubyzip"かも知れないけれど
あえて"zipruby"を使ってみた。なかなか使いやすい。
Gemfileに、
gem ‘zipruby’
を追加して bundle install しておく。
やりたかった機能は、Thinreports で作ったPDFをSQLite3のテーブルに出力履歴として保存しておき、後で再出力可能にする、というものだ。
保存先のテーブル = ‘history’
保存先カラム名 = ‘pdf’
とし、PDFファイルを slip とすると、以下の様な感じで保存できる。
buf = '' Zip::Archive.open_buffer(buf, Zip::CREATE) do |ar| ar.add_file(slip) end history[:pdf] = buf
パスワード保護を掛けたければ、
ar.encrypt("PASSWORD")
を
ar.add_file(slip)
の次に書けばいい。
テーブルに保存されたPDFを取り出してクライアント側に保存するには、
Zip::Archive.open_buffer(history[:pdf]) do |ar| ar.decrypt('PASSWORD') ar.fopen(ar.get_name(0)) do |file| send_data(file.read, :filename => 'save.pdf') end end
ZIPに複数ファイルを含めるのも難しくない。もちろん、バッファではなくファイルを扱うのも簡単だ。
ziprubyはすでにメンテされない古いGemだが、flymanの用途には充分だった。
TrackBacks
TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/1066
この投稿には、まだコメントが付いていません
コメント
_CM_NOTICE