2015-11-06 161 views
1

我使用的ListObject功能沒有任何分隔符返回不完整的目錄列表,並作爲結果,我有一些看起來像:AWS S3 - ListObjects

/BF 
/BF/FTP 
/BF/MUSIC/LIBRARY/AUDITION/BEAKING%20EARLY.MP3 
/BF/VIDEO/ 
/BF/VIDEO/Example 
/BF/VIDEO/Example/test.mp4 

在音樂文件夾中的問題。爲什麼ListObjects不以鍵返回S3Object:「/ BF/MUSIC」。有許多S3Objects具有相同的問題。爲什麼會這樣?

回答

3

原因是S3實際上有一個扁平結構。沒有文件夾,但它只是識別正斜槓,因此將具有相同前綴的文件組分組在同一個文件夾下。所以在你的例子中「/ BF/MUSIC」只是另一個對象,而不是一個空文件夾。

在Amazon S3中,存儲區和對象是主要資源,其中 對象存儲在存儲區中。 Amazon S3具有扁平結構,沒有像在典型文件系統中看到的那樣層次結構。但是,爲了簡化組織,對於 ,Amazon S3控制檯支持 文件夾概念作爲分組對象的方式。 Amazon S3通過使用對象的密鑰名稱前綴來完成此操作 。

來源:AWS Documentation: Working with Folders

+0

我需要寫類似文件夾資源管理器鬥,你有什麼想法,我怎樣才能得到例如路徑:「/ BF/MUSIC」使用ListObjects或其他什麼東西? – neustart47

+0

不是我所知道的。您可能需要提出自己的算法,比如將/之前的所有內容視爲子文件夾並對其進行跟蹤以將這些對象分組。 –

+1

@ neustart47這是'分隔符* *是*的用途。它在響應XML中的中返回「文件夾」。 –