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 画像を DB に保存し続けます。

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 に答える