Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用aws sdk v2将映像上载到S3_Ruby_Aws Sdk - Fatal编程技术网

Ruby 使用aws sdk v2将映像上载到S3

Ruby 使用aws sdk v2将映像上载到S3,ruby,aws-sdk,Ruby,Aws Sdk,我在使用aws sdk文档的过程中度过了一段非常痛苦的时光,我遵循的所有链接似乎都过时了,无法使用 我正在寻找一个直接的实现示例,将图像文件上传到Ruby中的S3存储桶 假设图像路径是screenshots/image.png 我想把它上传到bucketmy_bucket 在我的环境中生活着诚信 非常感谢您的建议。以下是如何将文件从磁盘上载到指定的存储桶和密钥: s3 = Aws::S3::Resource.new s3.bucket('my_bucket').object('key').u

我在使用aws sdk文档的过程中度过了一段非常痛苦的时光,我遵循的所有链接似乎都过时了,无法使用

我正在寻找一个直接的实现示例,将图像文件上传到Ruby中的S3存储桶

  • 假设图像路径是
    screenshots/image.png
  • 我想把它上传到bucket
    my_bucket
  • 在我的环境中生活着诚信

非常感谢您的建议。

以下是如何将文件从磁盘上载到指定的存储桶和密钥:

s3 = Aws::S3::Resource.new
s3.bucket('my_bucket').object('key').upload_file('screenshots/image.png')
这是最简单的方法。您应该将“key”替换为希望存储在AmazonS3中的密钥。这将使用多部分上载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参考文档也在这里:

当我遵循这些示例时,我会遇到一些错误,比如:
未定义的方法'write'(NoMethodError)
我最终使用了这个答案(),然后使用了
object=bucket.object('image.png')
object.put(body:contents)
@EldadMor您已链接到v1文档。v2文档可以在这里找到:你是我的英雄!在过去的3-4个小时里,试图让这项工作白费力气。在aws sdk的v1中执行此操作非常简单,但v2似乎不必要地复杂。@mmichael我很好奇v2上传比v1更复杂的方式是什么?语法非常相似,不是吗?对于v1,您不必处理客户机或资源类,只需运行
s3=AWS::s3.new
,然后运行
s3.bucket['bucket\u name'].objects['key'].write(文件:'/path/to/file')
。实际上我说错了,v2版本并不复杂。我的意思是说v2文档更令人困惑。在新的文档中,没有任何地方向您展示如何执行答案中的步骤。如果他们这样做了,那么它就没有在一个页面上显示你所需要的一切那么清晰了。我同意,他们在v2文档中将知识水平提高到了初学者以上。是的,文档是一场噩梦。最好能更好地概述客户机和资源等常见用例