2013-10-23 50 views
4

我有下面的代碼,用於本地文件上傳到亞馬遜S3鬥:我根據這個代碼亞馬遜S3 - 紅寶石。獲取剛上傳的資源的URL

require 'aws/s3' 
module AmazonS3 

    def self.upload_file(local_file) 
    bucket_name = "bucketfortest" 

     s3 = AWS::S3.new(
     :access_key_id  => ENV["AMAZON_ACCESS_KEY"], 
     :secret_access_key => ENV["AMAZON_SECRET_KEY"] 
    ) 


    key = File.basename(local_file) 

    amazon_object = s3.buckets[bucket_name].objects[key].write(:file => local_file) 
    return amazon_object #How can I get the URL of the object here? 

    end 
end 

Upoad file S3 我試圖找到找出一種方法來獲取剛剛上傳的對象的URL,但我無法找到它是什麼。我試過.url,但是這給了我一個未定義的方法。我也沒有看到文檔中的任何內容。

+0

唐S3的網站只是遵循固定的佈局?類似於 .amazonaws.com// .s3.amazonaws.com/。你可以看看'霧'是如何構造URL的線索(實際上,使用霧 - 它使用起來很不錯)。 – struthersneil

+0

'.public_url'怎麼辦? –

回答

11

我沒有使用Ruby的AWS SDK可言,但它看起來像你可以這樣做:

獲取public URL

return amazon_object.public_url 

還是一個signed URL for a private object

return amazon_object.url_for(:read, :expires => 10*60) 
2

你知道url,因爲它與本地文件的文件名相同。因此,您可以從文件名和存儲桶名稱中組成網址,除了成功之外,無需從S3獲取任何信息。