2012-06-06 2 views
0

Я написал функцию для перечисления 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 
+0

я нашел проблема заключалась в том, что файлы не читались в двоичном режиме. Это устранило проблему: zip [filename.gsub ("# {$ target_dir}" + "/", "")] = File.open (filename, 'rb') – Tedi

+0

, то, пожалуйста, добавьте его в качестве ответа , вы можете принять это через некоторое время или удалить этот вопрос, иначе он останется открытым – peter

+0

@peter. Он уже добавлен в качестве ответа. Нужно ли добавлять его в другое место? (Извините, я здесь совершенно новый) – Tedi

ответ

1

Я обнаружил, что проблема не в том, что файлы не читаются в двоичном режиме.

Это устранило проблему:

zip[filename.gsub("#{$target_dir}"+"/","")] = File.open(filename,'rb') 
Смежные вопросы