Скажем, у меня есть следующие каталоги и файлы в ведро Amazon 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
Как я могу перечислить все объекты и непосредственные подкаталоги данного каталога с помощью .NET AWS S3 API, без рекурсивного получения всего ниже этого каталога? Другими словами, как я могу "просматривать" содержимое каталога на одном уровне?
Например, представьте, что я хочу просмотреть содержимое bucketname/folder1/
. Я бы хотел видеть следующее:
- bucketname/folder1/ foobar.txt
- bucketname/folder1/subfolder1/
- bucketname/folder1/subfolder2/
... и ничего больше. Я не хочу перечислять файлы и каталоги в подкаталогах, просто хочу указать файлы и подкаталоги на уровне folder1
.
Есть ли способ применить фильтры к одному вызову API AWS, чтобы он не возвращал все и заставлял вручную анализировать только то, что мне нужно?
Я обнаружил, что этот код позволяет мне получить только непосредственные подкаталоги (как и предполагалось), но я не могу понять, как включить непосредственные файлы:
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)
{
/* ... */
}
}