问题描述
通过这段代码,我得到了 rootfolder/
下所有对象的列表
我的问题是:如何列出第一层的所有对象(红色。)
使用下面的代码,我得到如下输出:
rootfolder/hi.pdf rootfolder/creds.txt rootfolder/photo.png rootfolder/folder2/ rootfolder/folder2/creds2.txt rootfolder/folder2/account.pdf
function userlistObjectsSourceFolder() {
global $s3Client;
$bucket='myBucketS3';
$objects = $s3Client->getIterator('ListObjects',array(
"Bucket" => $bucket,'Marker' => "rootfolder/","Prefix" => "rootfolder/"
));
foreach ($objects as $object) {
echo $object['Key'] . "\n";
}
}
所需的输出是
rootfolder/hi.pdf rootfolder/creds.txt rootfolder/photo.png rootfolder/folder2/
编辑 2:
我将 ListObjectsV2
实现为
function userlistObjectsSourceFolder($sourceFolder2) {
global $s3Client;
$bucket='s3schema-template';
$objects = $s3Client->getIterator('ListObjectsV2',array(
"Bucket" => $bucket
"Prefix" => "rootfolder/","Delimiter" => "/"
));
foreach ($objects as $object) {
echo $object['Key'] . "\n";
}
使用这个配置我得到输出:
rootfolder/ rootfolder/hi.pdf rootfolder/creds.txt rootfolder/photo.png
但是我无法返回 CommonPrefixes,在这种情况下它是 folder2/
解决方法
如果您只想获取顶层文件夹的内容,您可以使用 ListObjectsV2
方法,并将 Delimiter
属性添加到您的请求中,其值为 /
。您应该得到一组位于前缀根部的 Contents
,以及一组将返回“子文件夹”的 CommonPrefixes
(我将其放在引号中,因为它们不是不是真正的文件夹)。