2012-10-07 12 views
7

poche cose che so. Le cartelle non sono un concetto di S3, sono semplicemente un oggetto a byte zero con nomi di chiavi che usano il prefisso "/". Supponendo che li chiamiamo cartelle e file per semplicità renderebbe la mia domanda più facile da esprimere.aws sdk php per elencare le cartelle s3

È possibile eseguire un s3-> get_object_list (..) con prefisso = "root /" e ottenere tutti i file/le cartelle. Il mio problema è questo

Dato un elenco di cartelle e sottocartelle per es.

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

Come è possibile elencare solo le cartelle. Speravo di evitare di elencare tutti i file (anche in risposta non è necessario restituirli) ma get_object_list in php non supporta il riferimento commonPrefixes: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list anche se il documento dice che il codice chiaramente non lo fa e l'utilizzo del delimitatore in realtà restituirà solo file nella cartella radice (prefisso)

Mi chiedo se qualcuno abbia utilizzato alcuna tecnica post-risposta o richiesta basata per aiutare con una tale situazione.

Ho già provato ogni combinazione di prefisso, delimitatore e indicatore a cui avrei potuto pensare. Non è così buono con PCRE ma sicuramente potrei usare che ho solo un livello di cartelle profonde ma non so come costruirne uno per questo caso. Poiché le mie richieste non funzionavano, ho accettato la risposta con tutti i file e le cartelle e spero di risolverlo in php ... o così ho pensato

Ho provato in risposta post: dirname() - non serve mancare fuori alcune cartelle (vuote), sicuro di poter rimuovere i duplicati nell'array ma esiste il problema della cartella mancante pathinfo() - si comporta allo stesso modo di dirname(), presuppone che tutti i percorsi terminino con nomefile. glob: nessuna fortuna, come sopra.

Dal momento che ho già perso una mezza giornata su questo sto sperando che qualcuno ha affrontato questo e si cura di condividere:

nota: Non ho alcun problema a fare questo in Python e boto. Ma questo non è Python e devo farlo in PHP per questo progetto.

risposta

Problemi correlati