2012-10-07 112 views
7

我知道的一些事情。 文件夾不是S3的概念,它們僅僅是一個零字節對象,其鍵名使用'/'作爲前綴。假設我們稱之爲簡單的文件夾和文件會使我的問題更易於表達。aws sdk php列出s3文件夾

可以通過前綴=「root /」來執行s3-> get_object_list(..)並獲取所有文件/文件夾。我的問題是這樣的。

給出文件夾和子文件夾的列表,例如,

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

如何只列出文件夾。我希望能夠防止列出所有文件(即使在響應中它們不需要返回),但get_object_list在php中不支持commonPrefixes ref:http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list 即使文檔中提到這樣的代碼顯然不會,並且使用分隔符實際上只會返回文件在根文件夾(前綴)

我想知道是否有人已經使用任何技術後響應或請求基礎來幫助這種情況。

我已經試過每個組合的前綴,分隔符和標記,我可以想到。對於PCRE來說不太好,但是我確定我可以使用它,我只有一層深度的文件夾,但我不知道如何爲這種情況構建一個文件夾。由於我的請求沒有工作,我開始接受所有文件和文件夾的響應,並希望在PHP中排除它......所以我認爲

我試過在後迴應: dirname() - no use missses列出一些文件夾(空的),確定我可以刪除數組中的重複項,但存在錯過的文件夾問題 pathinfo() - 與dirname()的行爲相同,假定所有路徑都以filename結尾。 glob - 沒有運氣,和上面一樣。

既然我已經浪費了半天時間在此我希望有人已經處理了這一點,並會照顧分享到:

注:我沒有問題,Python和博託這樣做。但這不是Python,我必須在PHP中爲此項目執行此操作。

回答