RubyonRailsアプリケーションでサーバサイドでファイル圧縮、パスワードの設定をしてダウンロードさせる必要があったので調べてみました。
ZipRubyがあったりRubyZipがあったり、どっちがどうなんだか、相変わらずRubyは混乱します。今回は評判のよさそうなZipRubyを使いました。gemでインストールできて、バージョンは0.2.9でした。バージョン低いのがちと気になります。
gem install zipruby
これだけでインストールは終わりです。
require ‘rubygems’
require ‘zipruby’Zip::Archive.open(‘hoge.zip’,Zip::CREATE) do |arc|
arc.add_file(‘test.pdf’)
endZip::Archive.encrypt(‘hoge.zip’, ‘password’)
コレだけです。簡単すぎる。
複数ファイルをひとまとめにしたい場合は
arc.add_file(‘test.pdf’)
を繰り返せばOK。ただ、フォルダごとごっそり圧縮、という方法は不明。フォルダ名を引数に指定したら怒られてしまいました。当然の結果。
最後の行がパスワードの設定です。ZIPファイル作るときにパスワードを設定するのではなく、既存のZIPファイルに対してパスワードを設定する、というイメージですね。Lhaplusではちゃんと解凍できました。