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がファイルを圧縮する方法だと思います。多分ヘッダー構造か何かと関係がありますか?どんな助けでも大歓迎です!