如何从Carrierwave上传文件中检索上传的图像(base64)完整网址到Rackspace?

时间:2016-12-06 12:09:36

标签: ruby-on-rails carrierwave rackspace

我只需要获取刚刚通过Carrierwave上传到Rackspace服务器的我的图片网址(base64)。

这是我的控制器。

def update_with_image
    user = current_user
    uploader = PictureUploader.new
    uploader.store!(user_update_params[:profile_image]) // base64 image like this 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2w...'

    // How can i update user_update_params[:profile_image] with the successfully uploaded profile_image url?

    if user.update_attributes(user_update_params)
      # Handle a successful update.
      render json: user, status: 200 ,serializer: UserSerializer
    else
      render json: { errors: user.errors }, status: 422
    end
  end

所以在uploader.store!(user_update_params[:profile_image])之后我怎样才能获得该文件的网址?

谢谢!

1 个答案:

答案 0 :(得分:0)

你是说这个?

uploader = AvatarUploader.new
uploader.store!(my_file)                              # size: 1024x768

uploader.url # => '/url/to/my_file.png'               # size: 800x600
uploader.thumb.url # => '/url/to/thumb_my_file.png'   # size: 200x200

在上传程序中调用url方法可以获取URL。 github

更新:从载波GitHub引用

您可以选择在配置中包含CDN主机名。强烈建议这样做,因为没有它,每个请求都需要查找此信息。

 config.asset_host = "http://c000000.cdn.rackspacecloud.com"

在您的上传器中,将存储设置为:fog

class AvatarUploader < CarrierWave::Uploader::Base
  storage :fog
end

那就是它!您仍然可以使用CarrierWave::Uploader#url方法将URL返回到Rackspace Cloud Files上的文件。