私はrubyzip
20MBから1GBの範囲のファイル/フォルダーのzip/unzipに使用しています.20MBのフォルダーを圧縮した後、作成されたrubyzip
zipファイルはほぼ同じサイズであることに気付きました。圧縮ファイルは実際のファイル サイズの 40% ~ 50% 未満でなければならないため、使用してみsystem(zip, archive, Dir["#{path}/**/**"])
ましたが、それを呼び出す正しい構文を取得できないと思います。
rubyzip
サイズも小さくなければならない実際のzipファイルを作成できないのはなぜですか。- 500MBを超えるzipファイルの場合、そのサイズのファイルのコストパフォーマンスの問題が発生するため、send_fileを使用してクライアントに送信する方法.500MB以上のzipファイルをパブリックフォルダーに配置し、サーバーにサービスを提供させるとどうなりますかパフォーマンスが向上する可能性がありますが、正しいですか?
- 使用する代わりに他のオプションがありますか
rubyzip/zipruby
(ライブラリも必要です)。
Ruby 1.9 と Rails 2.3 を使用しています。
私のコード:-
require 'zip/zip'
require 'fileutils'
require 'zip/zipfilesystem'
def self.compress_test(path)
path="#{RAILS_ROOT/answers/}"
path.sub!(%r[/$],'')
archive = File.join(path,File.basename(path))+'.zip'
FileUtils.rm archive, :force=>true
Zip::ZipFile.open(archive, 'w') do |zipfile|
Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file|
begin
zipfile.add(file.sub(path+'/',''),file)
rescue Zip::ZipEntryExistsError
end
end
end
end