如何判断对象是否是AWS S3上的文件夹

时间:2014-03-10 22:37:47

标签: object amazon-web-services amazon-s3 directory

我没有出现在元数据中 - 对象是否是文件夹。你们知道有没有具体的方法?我在谷歌搜索中找不到任何有价值的东西。

4 个答案:

答案 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