Скрепка: обнаружены следующие ошибки: Содержимое изображения не соответствует заявленному.

Я использую скрепку с приложением rails и всегда получаю следующую ошибку:

I, [2015-06-06T20:10:25.310071 #37358]  INFO -- : Command :: file -b --mime '/tmp/58e53d1324eef6265fdb97b08ed9aadf20150606-37358-ouvtzl.png'
I, [2015-06-06T20:10:25.317478 #37358]  INFO -- : [paperclip] Content Type Spoof: Filename ruby.png (application/octet-stream from Headers, [#<MIME::Type:0x000000053624c8 @friendly={"en"=>"Portable Network Graphics (PNG)"}, @system=nil, @obsolete=false, @registered=true, @use_instead=nil, @signature=false, @content_type="image/png", @raw_media_type="image", @raw_sub_type="png", @simplified="image/png", @i18n_key="image.png", @media_type="image", @sub_type="png", @docs=[], @encoding="base64", @extensions=["png"], @references=["IANA", "[Glenn_Randers-Pehrson]", "{image/png=http://www.iana.org/assignments/media-types/image/png}"], @xrefs={"person"=>["Glenn_Randers-Pehrson"], "template"=>["image/png"]}>] from Extension), content type discovered from file command: image/png. See documentation to allow this combination.
I, [2015-06-06T20:10:25.349416 #37358]  INFO -- : Command :: file -b --mime '/tmp/58e53d1324eef6265fdb97b08ed9aadf20150606-37358-1n574dp.png'
I, [2015-06-06T20:10:25.356667 #37358]  INFO -- : [paperclip] Content Type Spoof: Filename ruby.png (application/octet-stream from Headers, [#<MIME::Type:0x000000053624c8 @friendly={"en"=>"Portable Network Graphics (PNG)"}, @system=nil, @obsolete=false, @registered=true, @use_instead=nil, @signature=false, @content_type="image/png", @raw_media_type="image", @raw_sub_type="png", @simplified="image/png", @i18n_key="image.png", @media_type="image", @sub_type="png", @docs=[], @encoding="base64", @extensions=["png"], @references=["IANA", "[Glenn_Randers-Pehrson]", "{image/png=http://www.iana.org/assignments/media-types/image/png}"], @xrefs={"person"=>["Glenn_Randers-Pehrson"], "template"=>["image/png"]}>] from Extension), content type discovered from file command: image/png. See documentation to allow this combination.

Mongoid::Errors::Validations (
Problem:
  Validation of Mock failed.
Summary:
  The following errors were found: Image has contents that are not what they are reported to be
Resolution:
  Try persisting the document with valid data or remove the validations.):
  app/api/mockaccino/api.rb:23:in `block (2 levels) in <class:API>'

Команда Curl для теста:

curl -X POST -i -F image=@/home/user/workspace/ruby.png -F name=mock http://localhost:3000/api/mock

Я отправляю изображение и параметр с именем «имя» на сервер и создаю модель с этим атрибутом и изображением.

Модель:

class Mock
  include Mongoid::Document
  include Mongoid::Paperclip

  field :name, type: String

  has_mongoid_attached_file :image

  validates_attachment_presence :image
  validates_attachment_size :image, :less_than => 1.megabytes
  validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/]
end

Контроллер (виноград):

desc "Create an mock."
      params do
        requires :name, type: String, desc: "Mock name"
        requires :image, :type => Rack::Multipart::UploadedFile, :desc => "Image file."
      end 
      post do
        mock = Mock.create!(
          name: params[:name],
          image: ActionDispatch::Http::UploadedFile.new(params[:image])
        )
      end 

person Fran b    schedule 06.06.2015    source источник


Ответы (1)


У меня есть один пользователь, который видит его в разных браузерах. Я не могу дублировать его на своем локальном сервере разработки или в рабочей среде. У меня работает, у них нет. Не удалось выделить ничего отличающегося (пробовал ПК и Mac, разные браузеры и т. д.)

Перемещение скрепки с 4.3 на 4.2.1 устраняет проблему. Это переключает activemodel и activesupport с 3.2 обратно на 3.0 и устраняет зависимость от mimemagic. Я предполагаю, что это что-то тонкое и сложное в мимемагии.

person Steve    schedule 22.06.2015