如何在rails中创建给定压缩大小的zip文件

时间:2012-04-18 06:34:58

标签: ruby-on-rails size zip

我有一堆记录需要转换为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标题和东西提供一些方法..所以,一旦我知道我的输出有多大,我就可以修补。只是这个尺寸似乎不适合这个类。

注意:我已经尝试过安装zipRuby,因为它有一个压缩大小的方法,但这只会让我陷入另一个兔子洞......原生扩展等等。

1 个答案:

答案 0 :(得分:0)

在Zip库中看不到任何内容,抱歉。

考虑一下,如果可以:

  • 进一步推动zipRuby编译
  • 使用简单的File.read语句将已完成的zip文件分解为固定大小的块,并将这些块重新放在服务器上。
  • 通过限制添加的文件数量来限制zip文件的大小,例如:添加文件,直到超出文件大小限制,然后删除最后添加的文件并将其添加到新的zip文件