Я написал функцию для перечисления PDF-файлов внутри определенной папки и застегнул их почтой, но по какой-либо причине содержимое zip повреждено.Сжатые файлы (с использованием Zippy) повреждены
Сценарий в основном: a) Создает почтовый файл с именем $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
я нашел проблема заключалась в том, что файлы не читались в двоичном режиме. Это устранило проблему: zip [filename.gsub ("# {$ target_dir}" + "/", "")] = File.open (filename, 'rb') – Tedi
, то, пожалуйста, добавьте его в качестве ответа , вы можете принять это через некоторое время или удалить этот вопрос, иначе он останется открытым – peter
@peter. Он уже добавлен в качестве ответа. Нужно ли добавлять его в другое место? (Извините, я здесь совершенно новый) – Tedi