0
我寫了一個函數來列出特定文件夾中的PDF並將其壓縮,但由於某些原因壓縮內容已損壞。壓縮文件(使用Zippy)已損壞
該腳本的基本功能如下: a)在$target_dir
位置創建一個名爲$batch_id
的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
我發現這個問題是,文件沒有被以二進制模式讀取。 解決了這個問題: zip [filename.gsub(「#{$ target_dir}」+「/」,「」)] = File.open(filename,'rb') – Tedi
然後請添加它作爲答案,稍後您可以接受或刪除此問題,否則它會保持打開 – peter
@peter它已添加爲答案。我需要將它添加到其他地方嗎? (對不起,我這裏挺新的) – Tedi