Paperclip :: NotIdentifiedByImageMagickError, когда файл не является допустимым типом содержимого вложения - PullRequest
2 голосов
/ 21 января 2010

У меня систематически возникает ошибка при попытке загрузить файл, который не входит в ["image/jpg", "image/jpeg", "image/gif", "image/png", "image/pjpeg", "image/x-png"]

Когда я пытаюсь загрузить файл типа 'wav', у меня появляется это сообщение

* Photo /var/folders/nT/nTr21TWfFRO7r3cyG-h-7++++TM/-Tmp-/Clip audio 01,39154,0.wav is not recognized by the 'identify' command. * Photo /var/folders/nT/nTr21TWfFRO7r3cyG-h-7++++TM/-Tmp-/Clip audio 01,39154,0.wav is not recognized by the 'identify' command. * Photo content type Accepted files include: jpg, gif, png

Таким образом, он обнаруживает, что файл не является изображением, и отображает мое сообщение "Accepted files include: jpg, gif, png", но у меня есть это дополнительное сообщение перед моим. Загрузка отлично работает для фотографий

Мой код:

Контроллер:

def upload  
  @picture= Picture.new(params[:picture])  
    if !@picture.valid?  
        render  :form  
    end  
end  

Просмотр формы:

<%= error_messages_for :picture, :header_message => nil, :message => nil %>  
<% form_for :picture, @picture, :name => "uploadPic", :url => { :action => 'upload_data'}, :html => {:name => 'uploadForm', :multipart => true } do |form| %>  
    <%= form.file_field :photo %>  
    <%= submit_tag 'Save'%>  
<% end %>

Модель изображения:

 class Picture < ActiveRecord::Base    
    require 'paperclip'  
    has_attached_file :photo, :styles => { :medium => "300x300>", :thumb => "100x100>" }  

    validates_attachment_size :photo, :less_than => 2.megabytes , :message => "must be less than 2 megabytes"  
    validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/gif", "image/png", "image/pjpeg", "image/x-png"], :message => "Accepted files include: jpg, gif, png"   

 end

Ответы [ 2 ]

7 голосов
/ 22 января 2010

решил это с помощью: whiny => false
has_attached_file: photo,: whiny => false,: styles => {: medium => "300x300>",: thumb => "100x100>"}

3 голосов
/ 23 декабря 2010

: whiny => false было недостаточно для решения проблемы с последней версией скрепки (2.3.6). Я закончил тем, что делал это в инициализаторе рельсов:

module Paperclip
  class Attachment
    alias original_assign assign
    def assign(*args)
      original_assign(*args)
    rescue NotIdentifiedByImageMagickError => e
    end
  end
end

Кажется, можно проглотить это исключение, потому что ошибки валидации все равно добавляются, по крайней мере, если вы используете: whiny => true.

...