0

我目前有一个使用回形针的应用程序,允许用户上传他们的创意。到目前为止,当涉及到用户上传图像文件时,这已经完美无缺。我们已经测试过上传一个 .mov 文件,我得到这个错误:

Creative Paperclip::Errors::NotIdentifiedByImageMagickError

奇怪的是,这个错误只在 Heroku 上产生。我可以在本地主机上上传 .mov 文件。

我当前的宝石设置:

paperclip (3.4.1, 3.4.0)
paperclip-aws (1.6.7, 1.6.6)
paperclip-ffmpeg (0.10.2)
cocaine (0.5.1, 0.4.2)

事件.rb

has_attached_file :creative, 
                :processors => [:ffmpeg],
                :styles => { 
                  :thumb => [:geometry => "250x150", :format => 'png'], 
                  :custcreative => [:geometry => "275x75", :format => 'png'], 
                  :creativepreview => ["275x195",:png] 
                           },
                :url => "***", 
                :path => "***",
                :s3_domain_url => "***",
                :storage => :s3,
                :s3_credentials => Rails.root.join("config/s3.yml"),
                :bucket => '***',
                :s3_permissions => :public_read,
                :s3_protocol => "http",
                :convert_options => { :all => "-auto-orient" },
                :encode => 'utf8'

花几个小时试图弄清楚为什么这在本地有效但在 Heroku 上抛出错误。

我什至尝试删除 :style 设置,但仍然无效。

TIA

编辑

 Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/MidPen20130413-2-1mzetus.mov[0]'
4

1 回答 1

2

好吧,如果像我们这样的任何其他新手遇到同样的问题,这就是答案。问题在于用于图像裁剪的几何方法。railscasts 中建议的方式假定文件位于本地系统中并且需要更改。

旧方法:

def avatar_geometry(style = :original)
@geometry ||= {}
@geometry[style] ||= Paperclip::Geometry.from_file(avatar.path(style))
end

新方法

def avatar_geometry(style = :original)
@geometry ||= {}
avatar_path = (avatar.options[:storage] == :s3) ? avatar.url(style) : avatar.path(style)
@geometry[style] ||= Paperclip::Geometry.from_file(avatar_path)
end
于 2013-07-26T16:25:06.697 回答