检查s3存储桶中是否存在文件夹 [英] Check if folder exist in s3 bucket
问题描述
如何使用Ruby on Rails检查s3存储桶中是否存在某些文件夹?
How can I check if some folder exists in my s3 bucket using Ruby on Rails?
我正在使用AWS:S3官方gem初始化全局连接后
I’m using AWS:S3 official gem After initializing the global connection
AWS::S3::Base.establish_connection!(:access_key_id => 'my_key_id', :secret_access_key => ‘my_secret’)
我的存储桶名为: myfirstbucket
其中的文件夹名为: my_folder
在my_folder内的文件名为: my_pic.jpg
With file inside my_folder named: my_pic.jpg
当我尝试检查是否存在 my_pic.jpg
时,效果很好
When I try to check if my_pic.jpg
exist it work just fine
s3object.exists? "/my_folder/my_pic.jpg" , "myfirstbucket"
=> True
如何仅检查文件夹是否存在?
How can I check only if the folder exists?
s3object = AWS::S3::S3Object
s3object.exists? "/my_folder/" , "myfirstbucket"
=> False
推荐答案
使用 Bucket#objects
:
bucket.objects({prefix: 'my/folder/'}).limit(1).any?
返回
ObjectSummary
资源的Collection
.没有API请求直到在集合上调用可枚举的方法为止.Client#list_objects
将被多次调用,直到每次ObjectSummary
已产生.
Returns a
Collection
ofObjectSummary
resources. No API requests are made until you call an enumerable method on the collection.Client#list_objects
will be called multiple times until everyObjectSummary
has been yielded.
- http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Bucket.html#objects-instance_method
这篇关于检查s3存储桶中是否存在文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!