私が知っていることはほとんどありません。フォルダーは S3 の概念ではなく、プレフィックスとして「/」を使用するキー名を持つゼロ バイト オブジェクトです。簡単にするためにそれらをフォルダーとファイルと呼ぶと仮定すると、私の質問は言いやすくなります。
prefix ="root/" を指定して s3->get_object_list(..) を実行し、すべてのファイル/フォルダーを取得することができます。私の問題はこれです。
たとえば、フォルダーとサブフォルダーのリストが与えられた場合
root/
root/folder1/
root/folder1/file1.txt
root/folder2/
root/folder3/file2.txt
フォルダのみを一覧表示するにはどうすればよいですか。私はすべてのファイルをリストすることを防ぎたいと思っていました (それらが返される必要がない場合でも) が、php の get_object_list は現在 commonPrefixes ref をサポートしていません: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list evenドキュメントにはそう書かれていますが、コードは明らかにそうではなく、区切り文字を使用すると実際にはルートフォルダー内のファイルのみが返されます(接頭辞)
このような状況を支援するために、応答後または要求ベースの手法を誰かが使用したかどうか疑問に思っています。
考えられるプレフィックス、デリミタ、マーカーのすべての組み合わせをすでに試しました。PCREはあまり得意ではありませんが、1レベルの深さのフォルダーしかないことを使用できることは確かですが、この場合にフォルダーを作成する方法がわかりません。私のリクエストがうまくいかなかったので、私はすべてのファイルとフォルダで応答を受け入れ、うまくいけばそれをphpで整理しました...またはそう思いました
私は投稿応答で試しました: dirname() - いくつかのフォルダー (空のフォルダー) を見逃す使用はありません。配列内の重複を削除することはできますが、見つからないフォルダーの問題が存在します。すべてのパスがファイル名で終わること。glob - 上記と同じように運が悪い。
私はすでにこれで半日を無駄にしているので、誰かがこれに対処し、共有したいと思っています:
注:pythonとbotoでこれを行うのに問題はありません。しかし、これは Python ではなく、このプロジェクトでは PHP でこれを行う必要があります。