我有一段時間與aws-sdk文檔一起工作,我遵循的所有鏈接似乎都過時且無法使用。使用aws-sdk v2將圖像上傳到S3
我正在尋找一個將圖像文件上傳到Ruby中的S3存儲桶的直接實現示例。
- 假設圖像路徑是
screenshots/image.png
- ,我希望把它上傳到桶
my_bucket
- AWS creds住在我的ENV
任何意見是非常讚賞。
我有一段時間與aws-sdk文檔一起工作,我遵循的所有鏈接似乎都過時且無法使用。使用aws-sdk v2將圖像上傳到S3
我正在尋找一個將圖像文件上傳到Ruby中的S3存儲桶的直接實現示例。
screenshots/image.png
my_bucket
任何意見是非常讚賞。
這裏是你如何上傳從磁盤上的文件到指定的水桶和關鍵:
s3 = Aws::S3::Resource.new
s3.bucket('my_bucket').object('key').upload_file('screenshots/image.png')
這是最簡單的方法。您應該用您希望在Amazon S3中存儲的密鑰替換「密鑰」。這會使用分段上傳API自動上傳大文件,並會重試失敗的部分。
如果你喜歡經常上傳使用PUT對象,你可以調用#put
或使用Aws::S3::Client
:
# using put
s3 = Aws::S3::Resource.new
File.open('screenshots/image.png', 'rb') do |file|
s3.bucket('my_bucket').object('key').put(body:file)
end
# using a client
s3 = Aws::S3::Client.new
File.open('screenshots/image.png', 'rb') do |file|
s3.put_object(bucket:'my_bucket', key:'key', body:file)
end
此外,對於V2 SDK的API參考文檔是在這裏:http://docs.aws.amazon.com/sdkforruby/api/index.html
你是我的英雄!花了最後3-4個小時試圖使這項工作無濟於事。在aws-sdk的v1中這麼做很簡單,但v2似乎不必要的複雜。 – mmichael 2015-03-22 23:04:17
@mmichael我很好奇v2上傳比v1更復雜嗎?語法非常相似,不是嗎? – 2015-03-23 03:50:52
那麼,v1你不必處理客戶端或資源類,你可以運行's3 = AWS :: S3.new'然後's3.buckets ['bucket_name']。objects ['key' ] .write(文件:'/ path/to/file')'。我其實是錯誤的,V2版本並不複雜。我的意思是說v2文檔更令人困惑。新文檔中沒有任何內容會告訴你如何執行答案中的步驟。如果他們這樣做,那麼它就不像[v1中的說明](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3.html)那樣清晰,它可以在一頁上向您顯示所需的一切。 – mmichael 2015-03-23 05:12:52
當我跟隨這些例子我得到如下錯誤:'''未定義的方法'寫'爲#(NoMethodError)''' –
YoDK
2015-02-17 21:03:22
我結束了使用這個答案(http://stackoverflow.com/questions/130948/ruby-convert-file-to-string)然後用'''object = bucket.object('image.png')'''''' object.put(body:contents)''' – YoDK 2015-02-17 21:13:55
@EldadMor你鏈接到v1文檔。 v2文檔可以在這裏找到:http://docs.aws.amazon.com/sdkforruby/api/index.html – 2015-02-20 23:53:30