大量のファイルを圧縮する貴重なコードがいくつかありました.tmpファイルシステムにzipファイルを作成し、そこにファイルを追加しました。
自分で手動で tmp ディレクトリに書き込んで後で削除するのではなく、ruby の Tempfile を使用してファイルをコードに保存することで、より効率的にしようとしています。
私はそれを試してみるためにこのコードを書きました…</p>
def zip_up_files
require 'zip/zip'
t = Tempfile.new(["temp-filename-#{export_type}", '.zip'], :type => 'application/zip')
Zip::ZipOutputStream.open(t.path) do |z|
#pop some files in the zip...
end
#save it to the has_attachment :download on the model
self.download = File.open(t.path)
self.save
#delete TempFile...
t.close
end
この成功により、Tempfile がモデルの .download に保存されました。ただし、保存された zip ファイルに移動すると、それは zip ファイルではなく、文字化けしたテキスト ドキュメントです。modleに保存される前に、zipの作成または保存に欠けているものがあるのではないかと思っていました。タイプをTempFile作成に入れてみました。zip に MimeType がないようです。よくわからないのですが、誰か助けてくれませんか?
ありがとう!