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

Ruby 压缩文件(使用Zippy)已损坏,ruby,zip,Ruby,Zip,我写了一个函数来列出一个特定文件夹中的PDF文件,并对其进行压缩,但由于某些原因,压缩文件内容已损坏 该脚本基本上执行以下操作: a) 在$target\u dir位置创建名为$batch\u id的zip文件。 b) 将名为$batch\u id(.XML)的XML添加到zip根目录中。 c) 将$target\u dir/pdf/文件夹中找到的所有pdf添加到zip中的/pdf/文件夹中 结果:成功创建了zip,可以提取XML,但PDF似乎已损坏(文件大小非常小,无法打开) 我发现问题是文件

我写了一个函数来列出一个特定文件夹中的PDF文件,并对其进行压缩,但由于某些原因,压缩文件内容已损坏

该脚本基本上执行以下操作: a) 在
$target\u dir
位置创建名为
$batch\u id
的zip文件。 b) 将名为
$batch\u id(.XML)
的XML添加到zip根目录中。 c) 将
$target\u dir/pdf/
文件夹中找到的所有pdf添加到zip中的
/pdf/
文件夹中

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


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

这解决了问题:

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

我发现问题是文件没有以二进制模式读取。这修复了问题:zip[filename.gsub(“#{$target_dir}”+“/”,“”)]=File.open(filename,'rb'),然后请将其添加为答案,您可以稍后接受或删除此问题,否则它将保留open@peter它已经被添加为一个答案。我需要在其他地方添加它吗?(对不起,我是新来的)
  zip[filename.gsub("#{$target_dir}"+"/","")] = File.open(filename,'rb')