Rails压缩文件 - 读取二进制数据

时间:2012-05-02 21:35:34

标签: ruby-on-rails ruby zip binaryfiles

我正在使用rubyzip库来压缩文件 但我遇到了问题 我试试:

    Zip::ZipOutputStream.open('c:/sites/efiling2/test.zip') do |zos|
        zos.put_next_entry("test.rtf")
        zos.write IO.read('c:/sites/efiling2/test.rtf')
        zos.put_next_entry("test.jpg")
        zos.write IO.read('c:/sites/efiling2/test.jpg')
    end

但是write方法限制了原始文件的大小。例如,我的源文件 test.jpg 的大小为 11913字节,但在存档中有一个文件 test.jpg ,大​​小 11551字节。使用test.rtf也有相同的情况。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我怀疑您的问题可能是IO.read()。我不太确定它能正确处理二进制数据。

我会尝试这样做,看看它是否解决了问题:

File.open(filename, "rb") { |f| f.read }