我正在使用Paperclip和paperclip-ffmpeg来处理上传。以下是我的代码
class Asset<的ActiveRecord ::基
belongs_to :profile
has_attached_file :photo, :styles => {
:mobile => {:geometry => "400x300", :format => 'mp4', :streaming => true}
}, :processors => [:ffmpeg]
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png', 'image/gif', 'application/msword', 'application/pdf', 'video/x-flv']
端
当我上传图片或视频文件时,它正常工作。但是当我上传PDF或doc
时文件,发生此错误。
"uninitialized constant Paperclip::Error"
任何帮助??
或者如果上传文件是PDF或Doc,我如何进行条件验证。然后我可以跳过这个
下面的代码。因为当文件类型为PDF或Doc时,这是错误原因。
":styles => {
:mobile => {:geometry => "400x300", :format => 'mp4', :streaming => true}
}, :processors => [:ffmpeg]"
由于
答案 0 :(得分:1)
我已经在LinkedIn上为你问过Kirti Thorat - 她可能比我更好地处理Paperclip::Error
问题
或者如果上传文件是PDF或Doc
,我如何进行条件验证
在格式化has_attached_file
方法以使用lambda
,here's what we've done before:
has_attached_file :attachment,
styles: lambda { |a| a.instance.is_image? ? {:small => "x200>", :medium => "x300>", :large => "x400>"} : {:thumb => { :geometry => "100x100#", :format => 'jpg', :time => 10}, :medium => { :geometry => "300x300#", :format => 'jpg', :time => 10}}},
:processors => lambda { |a| a.is_video? ? [ :ffmpeg ] : [ :thumbnail ] }
def is_video?
attachment.instance.attachment_content_type =~ %r(video)
end
def is_image?
attachment.instance.attachment_content_type =~ %r(image)
end
这是相对较旧的代码,因此为了让您及时更新,Paperclip 4.0
发布了新的媒体欺骗功能,该功能基本上直接检查您的文件(而不是扩展名)的内容类型。 Kirti对此非常了解,所以最好等待她的回答
如果你想要我
,我可以解决它