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