我使用carrierwave将图像上传到s3作为用户的头像,图像已正确上传,但是当我尝试更新用户模型时,如果上传图片的网址有空格,则会出错:
URI::InvalidURIError
bad URI(is not URI?): https://files.s3.amazonaws.com/avatar/110/111134a0-25d6-0130-f023-60eb69762222/photo copy.jpg
解决这个问题的更好方法是什么? 我使用了carrierwave,fog,carrierwave_direct和rmagick来上传图片。
[UPDATE ::::::::::::::::::::::::::::::::::::::::::::: ::::::::]
阅读本文后#34; carrierwave fails to load certain url&#34;我添加了AvatarUploader < CarrierWave::Uploader::Base
:
def process_uri(uri)
URI.parse(URI.escape(URI.unescape(uri)))
end
但是没有工作,似乎这种方法是正确的,但是用数据空间代替&#34;%20&#34;来保存数据库中的数据库。
答案 0 :(得分:1)
在验证之前使用URI.escape清理URL。
1.9.3p327 > URI.escape "https://files.s3.amazonaws.com/avatar/110/111134a0-25d6-0130-f023-60eb69762222/photo copy.jpg"
=> "https://files.s3.amazonaws.com/avatar/110/111134a0-25d6-0130-f023-60eb69762222/photo%20copy.jpg"