2012-10-07 24 views
7

kilka rzeczy, które znam. Foldery nie są pojęciem S3, są po prostu obiektem zerowym z kluczowymi nazwami, które używają przedrostków "/". Zakładając, że nazwiemy je folderami i plikami dla uproszczenia, moje pytanie będzie łatwiejsze do wyrażenia.aws sdk php do wpisywania folderów s3

Możliwe jest wykonanie s3-> get_object_list (..) z prefiksem = "root /" i pobranie wszystkich plików/folderów. Mój problem jest taki.

Podano listę folderów i podfolderów np.

root/ 
root/folder1/ 
root/folder1/file1.txt 
root/folder2/ 
root/folder3/file2.txt 

Jak mogę wyświetlić tylko te foldery. Miałem nadzieję, że nie będę wyświetlał wszystkich plików (nawet w odpowiedzi, że nie muszą być zwracane), ale get_object_list w php nie obsługuje obecnie commonPrefixes ref: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list mimo że dokument mówi, więc kod wyraźnie nie, a użycie separatora faktycznie zwróci tylko pliki w folderze głównym (prefiks)

Zastanawiam się, czy ktoś użył jakiejkolwiek techniki po odpowiedzi lub prośbie opartej na pomocy w takiej sytuacji.

Próbowałem już każdego combo z przedrostkiem, ogranicznikiem i znacznikiem, o którym mogłem pomyśleć. Nie tak dobrze z PCRE, ale na pewno mógłbym użyć, że mam tylko jeden poziom głębokości folderów, ale nie wiem jak skonstruować jeden dla tego przypadku. Ponieważ moje żądania nie działały, przystąpiłem do zaakceptowania odpowiedzi ze wszystkimi plikami i folderami i mam nadzieję, że posortuję to w php ... lub tak pomyślałem

Próbowałem w odpowiedzi: dirname() - no use miss niektóre foldery (puste), na pewno mogę usunąć duplikaty w tablicy, ale problem z brakującym folderem istnieje pathinfo() - zachowuje się tak samo jak dirname(), zakłada, że ​​wszystkie ścieżki kończą się nazwą pliku. glob - bez powodzenia, tak samo jak powyżej.

Skoro już zmarnowane pół dnia na to mam nadzieję, że ktoś miał do czynienia z tym i będzie dbać podzielić:

uwaga: nie mam problemu robi to w Pythonie i boto. Ale to nie jest python i muszę to zrobić w PHP dla tego projektu.

Odpowiedz

Powiązane problemy