我没有出现在元数据中 - 对象是否是文件夹。你们知道有没有具体的方法?我在谷歌搜索中找不到任何有价值的东西。
答案 0 :(得分:11)
我不知道这种反应是否会在这么久之后发挥作用,但我们走了:
要解决此问题,您必须在java中执行此操作:
List<S3ObjectSummary> files = s3client.listObjects(bucket.getName()).getObjectSummaries();
for (S3ObjectSummary file : files) {
if (file.getKey().endsWith("/"))
System.out.println("----" + file.getKey() + " (ES CARPETA)");
else
System.out.println("----" + file.getKey() + " NO NO NO");
}
使用方法“endsWith(”/“)”,您可以检测S3ObjectSummary是否是文件夹。
希望这可以帮助某人。
麦克
答案 1 :(得分:4)
S3上没有文件夹概念。所有对象都有一个键(如名称),键可以包含特殊字符,如/(斜杠)。这让我们感觉到文件夹。
列出存储桶内容时,它会返回所有对象(和键)的列表。然后,您可以查看密钥字符串是否包含斜杠(/)。如果它包含,则理解该对象处于“类似文件夹”结构中。这样你就可以得到完整的细节。
“仅当您指定分隔符时,响应才能包含CommonPrefix。当您这样做时,CommonPrefixes包含Prefix与分隔符指定的下一次出现的字符串之间的所有键(如果有)。实际上,CommonPrefixes列出的键是就像前缀指定的目录中的子目录一样。例如,如果前缀是notes /而分隔符是斜杠(/),则在notes / summer / july中,公共前缀是notes / summer /。所有键都卷入了计算返回数时,公共前缀计数为单个返回。请参阅MaxKeys。“ http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html
答案 2 :(得分:4)
OP的未来3年,我提供了答案,因为它出现在最近的Google搜索中。
目前,“目录”的概念在S3中有所改进,这些对象接收内容类型为“application / x-directory”。
因此,如果您使用AWS Ruby SDK (version 1),则只需使用:
s3_client.buckets['some_bucket'].objects['some_directory_object'].content_type
答案 3 :(得分:2)
对象不是文件夹。来自文档:
Amazon S3存储桶没有您可以找到的目录层次结构 在典型的计算机文件系统中。但是,您可以创建一个逻辑 通过使用暗示文件夹结构的对象键名称来实现层次结构。
您可以做的最好的事情是使用GET Bucket(列表对象)来获取有关存储桶内容的一些信息:
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html