我有一堆记录需要转换为 XML,然后压缩成一个文件,这样我就可以将它发送到期望所述记录的服务器上。我遇到的问题是服务器只能接受小于给定数量的文件.. 让我们说 10 Megs
require 'zip/zip'
Zip::ZipOutputStream.open("tmp/myfile_#{Process.pid}.zip") do |zos|
i_xml.each_with_index do |xml, index|
zos.put_next_entry("#{index}.xml")
zos << xml
end
end
上面的代码完美地创建了 zip 文件。但我不知道如何获得压缩后的大小。
我可以为 zip header 和其他东西提供一些余地。所以一旦我知道我的输出有多大,我就可以修补。它只是得到这个大小似乎不在这个类的卡片中。
注意:我已经尝试安装 zipRuby,因为它有一个压缩大小的方法,但这只会让我陷入另一个兔子洞......本机扩展等。