我编写了一个函数来列出特定文件夹中的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
答案 0 :(得分:1)
我发现问题是文件没有以二进制模式读取。
这解决了问题:
zip[filename.gsub("#{$target_dir}"+"/","")] = File.open(filename,'rb')