Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 适用于 PHP 的 AWS 开发工具包 列出键

此主题将指导您使用版本 3 的适用于 PHP 的 AWS 开发工具包中的类列出 Amazon S3 存储桶中包含的对象键。

此主题假定您已按照 使用适用于 PHP 的 AWS 开发工具包和运行 PHP 示例 的说明执行操作,并正确安装了 适用于 PHP 的 AWS 开发工具包。

要使用 适用于 PHP 的 AWS 开发工具包 列出存储桶中包含的对象键,首先必须列出该存储桶中包含的对象,然后从列出的每个对象中提取键。在列出存储桶中的对象时,可选择使用低级别 Aws\S3\S3Client::listObjects() 方法或高级别 Aws\ResultPaginator 类。

低级别的 listObjects() 方法将映射到底层 Amazon S3 REST API。每个 listObjects() 请求均返回最多有 1000 个对象的页面。如果您的存储桶中有超过 1000 个对象,则将截断您的响应,并且您需要发送其他 listObjects() 请求,以检索下一组 1000 个对象。

您可以使用高级别 ListObjects 分页工具使列出存储桶中包含的对象的任务变得更轻松。要使用 ListObjects 分页工具创建对象列表,请执行从 Aws/AwsClientInterface 类继承的 Amazon S3 客户端 getPaginator() 方法,将 ListObjects 作为第一个参数,将包含从指定存储桶返回的对象的数组作为第二个参数。当作为 ListObjects 分页工具使用时,getPaginator() 方法将返回指定存储桶中包含的所有对象。不存在 1000 个对象的限制,因此,您无需担心响应是否被截断。

以下任务将引导您使用 PHP Amazon S3 客户端方法列出您能够从中列出对象键的存储桶中包含的对象。

例 列出对象键

以下 PHP 示例演示如何列出指定存储桶中的键。它演示如何使用高级别 getIterator() 方法列出存储桶中的对象,然后如何从该列表的每个对象中提取键。它还演示如何使用低级别 listObjects() 方法列出存储桶中的对象,然后如何从返回的列表的每个对象中提取键。有关运行本指南中的 PHP 示例的信息,请参阅运行 PHP 示例

<?php require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; // Instantiate the client. $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Use the high-level iterators (returns ALL of your objects). try { $objects = $s3->getPaginator('ListObjects', [ 'Bucket' => $bucket ]); echo "Keys retrieved!" . PHP_EOL; foreach ($objects as $object) { echo $object['Key'] . PHP_EOL; } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; } // Use the plain API (returns ONLY up to 1000 of your objects). try { $result = $s3->listObjects([ 'Bucket' => $bucket ]); echo "Keys retrieved!" . PHP_EOL; foreach ($result['Contents'] as $object) { echo $object['Key'] . PHP_EOL; } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; }

相关资源

本页内容: