徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2015年 2月
« 1月   3月 »
1234567
891011121314
15161718192021
22232425262728
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2015年2月3日(火曜日)

ruby(Rails)でzipファイルを扱うには、今時は"rubyzip"かも知れないけれど

カテゴリー: - flyman @ 22時30分14秒

あえて"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

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/1066

この投稿には、まだコメントが付いていません

コメント

_CM_NOTICE

20 queries. 0.016 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
nikkansports
IT Pro
レスポンス
テーマ選択

(4 テーマ)