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

Dvi*_*evy 30 php sdk amazon-s3

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

我知道要获取我所有对象的列表:

    $objects = $client->getIterator('ListObjects', array(
    'Bucket' => $bucket
)); 
Run Code Online (Sandbox Code Playgroud)

我想只获取文件夹下的对象my/folder/test.我试过添加

        'key' => "my/folder/test",
Run Code Online (Sandbox Code Playgroud)

        'prefix' => "my/folder/test",
Run Code Online (Sandbox Code Playgroud)

但它只是返回我桶中的所有对象.

dcr*_*cro 60

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

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


Wil*_*ley 27

答案是上面但我想我会提供一个完整的工作示例,可以直接复制和粘贴到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>";
}
Run Code Online (Sandbox Code Playgroud)

  • 为了替换工厂方法,使用它,$ s3Client = new S3Client(['version'=>'2006-03-01','region'=>'ap-southeast-1','credentials'=> [' key'=>'yourkey','secret'=>'yoursecreky']]); (5认同)