1

我正在使用carrierwave将图像上传到s3作为用户的头像,图像已正确上传,但是当我尝试更新用户模型时,如果上传的图像的url有空格,则会出现错误:

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 来上传图片。

[更新:::::::::::::::::::::::::::::::::::::::::::::::: :::::]

阅读此“ carrierwave 无法加载某些 url ”后,我添加了AvatarUploader < CarrierWave::Uploader::Base

def process_uri(uri) 
  URI.parse(URI.escape(URI.unescape(uri))) 
end 

但是没有用,似乎这种方法是正确的,但是一直在数据库中保存带有空格而不是“%20”的url图像。

4

1 回答 1

1

在验证 URL 之前,使用 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" 
于 2012-12-11T18:40:14.317 回答