2012-10-07 2 views
7

wenige dinge die ich kenne. Ordner sind kein Konzept von S3, sie sind lediglich ein Null-Byte-Objekt mit Schlüsselnamen, die das '/' als Präfixe verwenden. Wenn wir davon ausgehen, dass wir sie der Einfachheit halber als Ordner und Dateien bezeichnen, würde sich meine Frage leichter formulieren lassen.aws sdk php für die auflistung s3 ordner

Es ist möglich, eine s3-> get_object_list (..) mit prefix = "root /" zu erstellen und alle Dateien/Ordner abzurufen. Mein Problem ist das.

Gegeben eine Liste von Ordnern und Unterordnern für z.B.

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

Wie kann ich nur die Ordner auflisten. Ich hatte gehofft zu verhindern, alle Dateien auflisten (auch als Antwort müssen sie nicht zurückgegeben werden), aber Get_Object_list in PHP unterstützt nicht aktuelle commonPrefixes ref: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list , obwohl das Dokument so sagt der Code eindeutig nicht und die Verwendung des Trennzeichens wird nur zurückgeben Dateien im Stammordner (Präfix)

Ich frage mich, ob jemand Technik Post-Response oder Anfrage basiert verwendet, um mit einer solchen Situation zu helfen.

Ich habe schon jede Combo aus Präfix, Delimiter und Marker ausprobiert, die mir einfiel. Nicht so gut mit PCRE, aber sicher, dass ich verwenden könnte, dass ich nur eine Ebene tiefer Ordner habe, aber ich weiß nicht, wie man einen für diesen Fall erstellt. Da meine Anfragen nicht funktionierten, nahm ich die Antwort mit allen Dateien und Ordnern und hoffentlich sortiere es in PHP ... oder so dachte ich

Ich habe versucht, in Antwort nach Antwort: dirname() - keine Verwendung vermisst aus einigen Ordnern (leere), sicher kann ich Duplikate in Array entfernen, aber das Problem der verpassten Ordner existiert pathinfo() - verhält sich auf die gleiche Weise wie dirname(), nimmt an, dass alle Pfade mit Dateiname enden. Glob - kein Glück, das gleiche wie oben.

Da ich schon einen halben Tag auf dieser verschwendet ich jemand bin der Hoffnung, hat mit diesem behandelt und kümmern würde zu teilen:

Anmerkung: Ich habe kein Problem, diese Boto in Python und zu tun. Aber das ist nicht Python und ich muss dies in PHP für dieses Projekt tun.

Antwort