Biorąc pod uwagę mój S3 wiadro, który zawiera obrazy w strukturze tak:Odzyskaj listę tylko obiekty korzeniowe (folderów) S3 - AWS SDK v3 php
root/portraits/portrait_001.jpg
root/landscapes/landscape_001.jpg
gdzie główny jest mój wiadro, i nie ma innego pliki w moim katalogu głównym, tylko te foldery (obiekty), w jaki sposób mogę pobrać listę tylko tych obiektów?
portraits/
landscapes/
Jestem zaznajomiony z wykorzystaniem separatora i prefiksu w wywołaniu ListObjects.
Gdybym wykonać następujące czynności, otrzymuję żadnych wyników:
$objects = $s3->getIterator('ListObjects', array(
'Bucket' => $bucket,
'Delimiter' => '/',
));
foreach($objects as $object)
echo $object['Key'] . "\n";
Jeśli nie używam separatora, mam wszystko, oczywiście.
Nie mogę użyć prefiksu, ponieważ pożądane obiekty mają poziom główny. W przeciwnym razie nie mam problemu z używaniem prefiksu do wymawiania, lista tylko plików w "portrety /"
Z moich wyszukiwań udało mi się znaleźć rozwiązania z poprzednich lat, które dotyczą tylko aws php sdk v1 lub v2, i nie miałem szczęścia w próbowaniu tych (v3 jest zupełnie inny)
Jakieś sugestie? Czuję, że brakuje mi czegoś prostego, ale przeszukując dokumentację, nie mogę znaleźć niczego, co mogłoby mi pomóc. W ostateczności, po prostu trzeba trzymać z ręcznie deklarowania tablicę
$categories = ['portraits/', 'landscapes/']
Ale to nie jest idealnym rozwiązaniem w przypadku, gdy chcę dodać więcej kategorii w przyszłości, i nie trzeba się martwić o dodawanie kolejnej kategorii ręcznie.
Każda pomoc będzie bardzo mile widziane :)
Edit - Rozwiązanie
muszę zostały patrząc w niewłaściwych miejscach podczas mój obiekt wysypisk, ale ostatecznie ten przedrostki w zwróconym wyniku z a ListObjects zadzwonić z separatora z '/', tak jak poniżej:
$s3->listObjects(array('Bucket' => $bucket, 'Delimiter' => '/'));
Czy próbowałeś za pomocą listy 'CommonPrefixes' wrócił z' ListBucket'? https://docs.aws.amazon.com/AmazonS3/latest/dev/ListingKeysHierarchy.html –
Oryginalnie nie mogłem znaleźć popularnych prefiksów w dowolnym miejscu, ale być może przeoczyłem to podczas moich zrzutów obiektów w niewłaściwych miejscach.Właśnie je znalazłem. Dzięki za pomoc :) –