0

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

该脚本基本上执行以下操作: a) 创建一个名为 的 zip$batch_id文件$target_dir。b) 将一个以 命名的 XML 添加$batch_id(.xml)到 zip 根目录。c) 将文件夹中找到的所有 PDF 添加$target_dir/pdf//pdf/zip 文件夹中。

结果: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
4

1 回答 1

1

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

这解决了问题:

  zip[filename.gsub("#{$target_dir}"+"/","")] = File.open(filename,'rb')
于 2012-06-06T16:46:04.577 回答