2016-12-06 32 views
0

我只需要获取通过Carrierwave上传到Rackspace服务器的映像(base64)的url。如何从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])之后我怎样才能得到该文件的网址?

谢谢!

回答

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" 

在你上传,设置存储于:雾

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

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

+0

哦谢谢!但我可以得到完整的网址,包括“http://myclound.rackspace ..” – user3403614

+0

你应该能够得到的。以防万一你懒得通过文档,我会把它复制到我的答案:) –

+0

它仍然无法正常工作,所以我需要转换base64'data:image/jpeg; base64,/ 9j/4AAQ'到其他文件类型? – user3403614