Nói rằng tôi có các thư mục và các tập tin sau đây trong một xô Amazon S3 (tập tin nằm trong đậm):Làm thế nào tôi có thể không đệ quy duyệt nội dung của một thư mục với API AWS S3?
- bucketname/
- bucketname/folder1/
- bucketname/folder1/foobar.txt
- bucketname/folder1/subfolder1/
- bucketname/folder1/subfolder1/hello.txt
- bucketname/folder1/subfolder2/
- bucketname/folder1/subfolder2/world.txt
- bucketname/folder1/subfolder2/subsubfolder1/
- bucketname/folder1/subfolder2/subsubfolder1/file.txt
Làm cách nào tôi có thể liệt kê tất cả các đối tượng và ngay lập tức thư mục con của một thư mục cụ thể với .NET AWS S3 API, mà không đệ quy nhận mọi thứ bên dưới d irectory? Nói cách khác, làm thế nào tôi có thể "duyệt" nội dung của một thư mục ở một cấp độ?
Ví dụ: hãy tưởng tượng tôi muốn duyệt nội dung của bucketname/folder1/
. Những gì tôi muốn thấy là như sau:
- bucketname/folder1/foobar.txt
- bucketname/folder1/subfolder1/
- bucketname/folder1/subfolder2/
. ..và không có gì khác. Tôi không muốn liệt kê các tệp và thư mục trong các thư mục con , tôi chỉ muốn liệt kê các tệp và thư mục con ở cấp độ folder1
.
Có cách nào để áp dụng bộ lọc cho một cuộc gọi API AWS duy nhất để nó không trả lại mọi thứ và buộc tôi phân tích cú pháp chỉ những gì tôi cần theo cách thủ công không?
tôi đã tìm thấy rằng mã này hãy cho tôi nhận được chỉ là thư mục con ngay lập tức (như dự định), nhưng tôi không thể tìm ra cách để bao gồm ngay file quá:
var request = new ListObjectsRequest()
.WithBucketName("bucketname")
.WithPrefix(@"folder1/")
.WithDelimiter(@"/");
using (var client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey))
using (var response = client.ListObjects(request))
{
foreach (var item in response.CommonPrefixes)
{
/* ... */
}
}