У меня есть приложение Rails 3, использующее Paperclip 2.3.8.В моей модели указано следующее:
validates_attachment_content_type :file,
:content_type => ['image/jpeg', 'image/png', 'image/gif',
'image/pjpeg', 'image/x-png'],
:message => 'Not a valid image file.'
Но при проверке фиктивной загрузки вместо «Неправильный файл изображения».Я получаю это странное сообщение об ошибке:
/var/folders/cs/cs-jiL3ZH1WOkgLrcqa5Ck+++TI/-Tmp-/stream20110404-43533-vm7eza.pdf
is not recognized by the 'identify' command.
Любые идеи, что здесь происходит не так ??
- РЕДАКТИРОВАТЬ -
Для чего это стоит, я уже рассмотрелImageMagick / Rmagick отходит от аналогичного вопроса, упомянутого в комментариях (спасибо, fl00r!).
Одна вещь, которая приходит мне в голову (теперь, когда я нахожусь на пути к тому, чтобы быть ошибкой ImageMagick) - этопроцессор водяных знаков на этом вложенном изображении.
Итак, может быть, он пытается обработать водяные знаки, прежде чем попытаться проверить, и , что - это то, откуда приходит сообщение об ошибке?
- РЕДАКТИРОВАТЬ -
Я попытался удалить процессор, но сообщение об ошибке не изменилось ... поэтому не уверен, что делать дальше.
- РЕДАКТИРОВАТЬ -
:) Вот вся модель в соответствии с просьбой.
require 'paperclip_processors/watermark'
class Attachment < ActiveRecord::Base
# RELATIONSHIPS
belongs_to :photo
belongs_to :user
has_attached_file :file,
:processors => [:watermark],
:styles => {
:full => "960",
:half => "470",
:third => "306",
:fourth => "225",
:fifth => "176x132#",
:tile => "176x158>",
:sixth => "145x109#",
:eighth => "106x80#",
:tenth => "87x65#",
:marked => { :geometry => "470",
:watermark_path => "#{Rails.root}/public/images/watermark.png",
:position => 'Center' }
},
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "photos/:user_id/:id/:username_:id_:style.:extension"
# VALIDATIONS
validates_attachment_presence :file
validates_attachment_content_type :file,
:content_type => ['image/jpeg', 'image/png', 'image/gif',
'image/pjpeg', 'image/x-png'],
:message => 'Not a valid image file.'
validate :file_dimensions, :unless => "errors.any?"
# CUSTOM VALIDATIONS
def file_dimensions
dimensions = Paperclip::Geometry.from_file(file.to_file(:original))
self.width = dimensions.width
self.height = dimensions.height
if dimensions.width < 1600 && dimensions.height < 1600
errors.add(:file,'Width or height must be at least 1600px')
end
end
# MAINTENANCE METHODS
def self.orphans
where( :photo_id => nil )
end
end