如果头像URL有空格,则更新用户模型的错误URI(不是URI?)

时间:2012-12-11 16:40:14

标签: amazon-s3 ruby-on-rails-3.2 carrierwave image-uploading

我使用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;来保存数据库中的数据库。

1 个答案:

答案 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"