压缩文件(使用Zippy)已损坏

时间:2012-06-06 07:48:15

标签: ruby zip

我编写了一个函数来列出特定文件夹中的PDF并拉链它们但由于某种原因,zip内容已损坏。

该脚本基本上是这样做的: a)在$batch_id位置创建一个名为$target_dir的zip文件。 b)将以$batch_id(.xml)命名的XML添加到zip根目录。 c)将$target_dir/pdf/文件夹中找到的所有PDF添加到zip中的/pdf/文件夹中。

结果:成功创建了zip,可以提取XML,但PDF似乎已损坏(文件大小非常小,无法打开)。

def zip_batch
  puts "Zipping batch..."
  require 'zippy'

  Zippy.create("#{$target_dir}"+"\\"+"#{$batch_id}"+".zip") do |zip|
    zip ["#{$batch_id}"+".xml"] = File.open("#{$target_dir}"+"\\"+"#{$batch_id}"+".xml")
    Dir.glob("#{$target_dir}"+"/pdf/*.pdf").each do |filename|
      puts "   -> Adding "+ filename.gsub("#{$target_dir}"+"/","")
      puts filename
      zip[filename.gsub("#{$target_dir}"+"/","")] = File.open(filename)
    end
  end
end

1 个答案:

答案 0 :(得分:1)

我发现问题是文件没有以二进制模式读取。

这解决了问题:

  zip[filename.gsub("#{$target_dir}"+"/","")] = File.open(filename,'rb')