列出 Amazon S3 上特定文件夹中的对象

2022-08-30 12:32:48

我正在尝试获取存储桶中特定文件夹下的列表。Object

我知道要获得我所有对象的列表,我这样做:

    $objects = $client->getIterator('ListObjects', array(
    'Bucket' => $bucket
)); 

我只想获取文件夹下的对象。我已尝试添加my/folder/test

        'key' => "my/folder/test",

        'prefix' => "my/folder/test",

但它只是返回我的存储桶中的所有对象。


答案 1

您需要 使用 将搜索限制为特定目录(通用前缀)。Prefix

$objects = $client->getIterator('ListObjects', array(
    "Bucket" => $bucket,
    "Prefix" => "your-folder/"
)); 

答案 2

答案在上面,但是我想我会提供一个完整的工作示例,可以直接复制并粘贴到php文件中并运行

use Aws\S3\S3Client;

require_once('PATH_TO_API/aws-autoloader.php');

$s3 = S3Client::factory(array(
    'key'    => 'YOUR_KEY',
    'secret' => 'YOUR_SECRET',
    'region' => 'us-west-2'
));

$bucket = 'YOUR_BUCKET_NAME';

$objects = $s3->getIterator('ListObjects', array(
    "Bucket" => $bucket,
    "Prefix" => 'some_folder/' //must have the trailing forward slash "/"
));

foreach ($objects as $object) {
    echo $object['Key'] . "<br>";
}

推荐