Проблемы с Rubyzip в Windows - PullRequest
1 голос
/ 01 марта 2012

Я использую Rubyzip для распаковки файлов, загруженных пользователем. Файл содержит кучу изображений, которые распаковываются и помещаются в папку. Это хорошо работает на Mac, но в Windows он не будет распаковывать ZIP-файл. Вот модель, которую я использую:

require "zip/zip"
class Photo < ActiveRecord::Base
  validates_presence_of :image_file_name, :message => "Er is geen bestand bijgevoegd!"

  belongs_to :album

  has_attached_file :image, :styles => {
  :original => ["1024x1024>", :jpg],
  :medium => "300x250#",
  :thumb => "150x100#"
  }, :url => "/uploads/photos/:id/:style.:extension"

  def zip?
   image.content_type == "application/zip"
  end

  def save_photo
   if zip?
    extract_zip
    true
    else
    self.save
   end
  end

  def extract_zip
  Zip::ZipFile.foreach(image.queued_for_write[:original].path) do |entry|
   next if entry.name =~ /__MACOSX/ or entry.name =~ /\.DS_Store/ or !entry.file?
   filename = entry.name
   basename = File.basename(filename)

   tempfile = Tempfile.new(basename)
   tempfile.binmode
   tempfile.write(entry.get_input_stream.read)

  photo = Photo.create(:image => tempfile, :album_id => album_id)
end
end
end

Поскольку он отлично работает на Mac, я думаю, что Windows архивирует файл. Может быть, что-то делать со структурой заголовка или что-то? Любая помощь очень ценится!

...