sla*_*fer 3 ruby amazon-s3 amazon-web-services
我想使用AWS-SDK-CORE ruby SDK将文件(任何文件,可能是.txt,.mp4,.mp3,.zip,.tar ......等)上传到AWS S3
这是我的代码:
require 'aws-sdk-core'
Aws.config = {
:access_key_id => MY_ACCESS_KEY
:secret_access_key => MY_SECRET_KEY,
:region => 'us-west-2'
}
s3 = Aws::S3.new
resp = s3.put_object(
:bucket => "mybucket",
:key => "myfolder/upload_me.sql",
:body => "./upload_me.sql"
)
Run Code Online (Sandbox Code Playgroud)
现在,上面的代码运行并创建一个myfolder/upload_me.sql只写了一行的键,./upload_me.sql哪个是错的.该文件upload_me.sql有几行.
预期的行为是将文件上传到upload_me.sqlS3上mybucket/myfolder/upload_me.sql.但它只是写了一行mybucket/myfolder/upload_me.sql,就是这样./upload_me.sql
现在,如果我省略如下:body部分:
s3 = Aws::S3.new
resp = s3.put_object(
:bucket => "mybucket",
:key => "myfolder/upload_me.sql",
)
Run Code Online (Sandbox Code Playgroud)
然后它只是创建并清空所谓的mybucket/myfolder/upload_me.sql甚至无法下载的密钥(好吧,即使它被下载,也没用)
你能指出我哪里出错吗?
以下是方法的ruby-SDK-core文档put_object:http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/V20060301.html#put_object-instance_method
更新: 如果我尝试使用AWS-CLI上传相同的文件,它就会上传得很好.这是命令:
aws s3api put-object --bucket mybucket --key myfolder/upload_me.sql --body ./upload_me.sql
Run Code Online (Sandbox Code Playgroud)
所以,在htis问题上度过一个令人沮丧的星期天下午之后,我终于破解了它.我真正需要的是:body => IO.read("./upload_me.sql")
所以我的代码如下所示:
s3 = Aws::S3.new
resp = s3.put_object(
:bucket => "mybucket",
:key => "myfolder/upload_me.sql",
:body => IO.read("./upload_me.sql")
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |