见下面的更新!
将图像文件上传到Amazon S3然后尝试保存文件后,我遇到了问题。
我使用direct_fog_url(with_path:true)来获取上传图片的网址。然后我得到以下错误:
ActiveRecord :: RecordInvalid验证失败:图片无法下载文件
我看到了这两种可能的解决方案:
https://github.com/jnicklas/carrierwave/issues/700
http://www.github.com/jnicklas/carrierwave/issues/888
但似乎没有人工作。
我使用旧的删除命令:覆盖方法process_uri(在此处输入链接描述):
def process_uri(uri)
URI.parse(URI.escape(URI.unescape(uri)).gsub("[", "%5B").gsub("]", "%5D").gsub("+", "%2B"))
end
在我的应用程序中,我使用以下宝石:
宝石'迷雾'
gem'carrierwave'
gem'carrierwave_direct'
gem'rmagick'
谢谢!
更新:在实施@ Alex的答案后,我们解决了这个问题,但现在当我们进行上传时,我们收到以下错误:
Excon :: Errors :: MovedPermanently
PermanentRedirect 您尝试访问的存储区必须使用指定的端点进行寻址。请将以后的所有请求发送到此端点。
答案 0 :(得分:1)
您是否找到了解决此问题的方法?
我在这里面临着同样的问题,我正在尝试使用carrierwave获取远程URL(而不是在S3上)并且我得到了臭名昭着的“无法下载文件”错误:
Validation failed: Image could not download file
[...]/gems/activerecord-3.2.9/lib/active_record/validations.rb:56:in `save!'
您是否可以发布您的网址以查看有哪些特殊字符?
编辑:我找到了解决方案。我的情况要求我不改变或逃避uri。我发现通过在'def process_uri(uri)'方法中添加'return'它可以正常工作。 为了防止这对其他人有用,这是我的上传器类中的重写方法: def process_uri(uri)
return URI.parse(uri)
end
答案 1 :(得分:1)
对于 Excon :: Errors :: MovedPermanently 问题,请确保您在carrierwave.rb文件中配置了正确的数据中心区域。例如,如果您在美国西部托管,则您的地区需要设置为我们西部。