转载

如何上传文件到 Amazon S3

在篇文章中介绍过如何使用AWS SDK for Ruby版本2从Amazon S3下载对象。接下来介绍如何上传对象。

托管文件上传

最简单最常见的任务是将磁盘上的文件上传到Amazon S3的bucket。使用Amazon S3的资源接口时,这就变得非常简单了:

s3 = Aws::S3::Resource.new  s3.bucket('bucket-name').object('key').upload_file('/source/file/path')

你把附加选项转到资源构造函数和#upload_file上。该扩展示例演示了如何配置资源客户端,上传公共对象,然后生成可用于从浏览器下载对象的URL。

s3 = Aws::S3::Resource.new( credentials: Aws::Credentials.new('akid',         'secret'), region: 'us-west-1' ) obj = s3.bucket('bucket-name').object('key')         obj.upload_file('/source/file/path', acl:'public-read') obj.public_url         #=> "https://bucket-name.s3-us-west-1.amazonaws.com/key"

这是我推荐的SDK上传文件到bucket的方法。采用这种方法有下列优点:

•管理超过15MB对象的多部分上传。

•正确以二进制方式打开文件,避免编码问题。

•多线程并行上传大对象的各部分。

其他方法

除了 Aws::S3::Object#upload_file, 你也可以使用 #put 或者多部分上传APIs上传文件.

PUT 文件

小文件的话, 你可以使用 #put。#put方法接受可选主体, 既可以是一个字符串也可以是任何其他IO 对象。

1 obj = s3.bucket('bucket-name').object('key') 2 3 # from a string 4 obj.put(body:'Hello World!') 5 6 # from an IO object 7 File.open('/source/file', 'rb') do |file| 8 obj.put(body:file) 9 end

多部分 APIs

如果有可能,我建议你使用#upload_file。如果你需要管理大型对象的副本,那么你就需要使用多部分接口。这种方法对于最小文件有限制,你需要注意各部分的大小。而通常,这些都是留给先进用例的。

原文链接: http://ruby.awsblog.com/post/Tx1K43Z7KXHM5D5/Uploading-Files-to-Amazon-S3

活动推荐: 5月26日 CSDN在线培训——AWS 云计算环境中的机器学习

( 翻译/李贻丽  责编/王鑫贺 )

正文到此结束
Loading...