如何在S3中获取存储桶的顶级目录?

问题描述 投票:0回答:1

如何列出存储桶中对象的公共前缀?

如果我使用ListObjects,我能够检索对象。我可以看到有一个名为2017的常见前缀:

using (var client = new AmazonS3Client())
{
    var listObjectsResponse = client.ListObjects(new ListObjectsRequest
    {
        BucketName = bucket,
        Prefix = "2",
        Delimiter = "",
    });

    // Prints: 2017/11/08/<omitted>.json
    Console.WriteLine(listObjectsResponse.S3Objects.First().Key);        
}

但是如果我设置Delimiter,则不会返回任何内容:

using (var client = new AmazonS3Client())
{
    var listObjectsResponse = client.ListObjects(new ListObjectsRequest
    {
        BucketName = bucket,
        Prefix = "2",
        Delimiter = "/",
    });

    // Prints: 0
    Console.WriteLine(listObjectsResponse.S3Objects.Count);      
}

如何获得2017年的常用前缀?

我已经尝试查看文档,它只是说使用前缀和分隔符,但这不起作用。

amazon-web-services amazon-s3
1个回答
1
投票

我看到CommonPrefixes上有一个ListObjectsResponse财产。

using (var client = new AmazonS3Client())
{
    var listObjectsResponse = client.ListObjects(new ListObjectsRequest
    {
        BucketName = bucket,
        Prefix = "2",
        Delimiter = "/",
    });

    // Prints: 2017
    Console.WriteLine(listObjectsResponse.CommonPrefixes[0]);     
}
© www.soinside.com 2019 - 2024. All rights reserved.