如何解决使用 PHP SDK 仅列出来自 AWS S3 的目录
通过这段代码,我得到了 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
(我将其放在引号中,因为它们不是不是真正的文件夹)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。