我目前有一个使用回形针的应用程序,允许用户上传他们的广告素材。到目前为止,当用户上传图像文件时,这已经完美无缺。我们已经测试过上传.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)
Event.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上抛出错误。
我甚至尝试删除:样式设置,但仍然无效。
TIA
修改
Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/MidPen20130413-2-1mzetus.mov[0]'
答案 0 :(得分:2)
嗯,如果像我们这样的其他新手遇到同样的问题,这里就是答案。问题在于用于图像裁剪的几何方法。在railscasts中建议的方式假定文件在本地系统中并且需要更改。
OLD METHOD:
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