由於包含在像這樣的結構圖像我S3鬥:只檢索根對象(文件夾)在S3中的列表 - AWS SDK V3 PHP
root/portraits/portrait_001.jpg
root/landscapes/landscape_001.jpg
其中root是我的水桶,並沒有其他文件在我的根,只是這些文件夾(對象),我如何檢索只有這些對象的列表?
portraits/
landscapes/
我熟悉在ListObjects調用中使用分隔符和前綴。
如果我這樣做,我沒有得到任何結果:
$objects = $s3->getIterator('ListObjects', array(
'Bucket' => $bucket,
'Delimiter' => '/',
));
foreach($objects as $object)
echo $object['Key'] . "\n";
如果我不使用分隔符,我得到的一切,很明顯。
我不能使用前綴,因爲我希望的對象是根級。否則,我沒有問題使用前綴說,只列出'肖像/'中的文件
從我的搜索, V2和我沒有嘗試過那些運氣(V3是完全不同的)
有什麼建議嗎?我覺得我錯過了一些簡單的東西,但是通過文檔搜索,我找不到任何東西來幫助我。作爲最後的手段,我就必須堅持用手工聲明數組
$categories = ['portraits/', 'landscapes/']
但是,這不是在我希望在未來增加更多類別的情況理想,而不必擔心手動添加另一個類別。
任何幫助,將不勝感激:)
編輯 - 解決方案
我一定是找錯了地方在我的對象轉儲,但最終還是看到了常用前綴在返回的結果從帶有分隔符「/」的ListObjects調用,如下所示:
$s3->listObjects(array('Bucket' => $bucket, 'Delimiter' => '/'));
您是否嘗試過使用的'CommonPrefixes'從'ListBucket'返回的列表? https://docs.aws.amazon.com/AmazonS3/latest/dev/ListingKeysHierarchy.html –
最初我找不到任何地方的通用前綴,但也許我忽略了在我的對象轉儲錯誤的地方。我現在才找到他們。謝謝您的幫助 :) –