Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

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

注意

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

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

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

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

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

列出对象键

1

使用 Aws\S3\S3Clientfactory 方法创建 Amazon S3 客户端的实例。

2

执行高级别 Amazon S3 客户端 getIterator() 方法,将 ListObjects 命令作为第一个参数,将包含从指定存储桶返回的对象的数组作为第二个参数。

或者可执行低级别 Amazon S3 客户端 listObjects() 方法,将包含从指定存储桶返回的对象的数组作为参数。

3

从返回对象列表的每个对象中提取对象键。

以下 PHP 代码示例演示如何列出您能够从中列出对象键的存储桶中包含的对象。

use Aws\S3\S3Client; // Instantiate the client. $s3 = S3Client::factory(); $bucket = '*** Bucket Name ***'; // Use the high-level iterators (returns ALL of your objects). $objects = $s3->getIterator('ListObjects', array('Bucket' => $bucket)); echo "Keys retrieved!\n"; foreach ($objects as $object) { echo $object['Key'] . "\n"; } // Use the plain API (returns ONLY up to 1000 of your objects). $result = $s3->listObjects(array('Bucket' => $bucket)); echo "Keys retrieved!\n"; foreach ($result['Contents'] as $object) { echo $object['Key'] . "\n"; }

例 列出对象键

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

<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Use the high-level iterators (returns ALL of your objects). try { $objects = $s3->getIterator('ListObjects', array( 'Bucket' => $bucket )); echo "Keys retrieved!\n"; foreach ($objects as $object) { echo $object['Key'] . "\n"; } } catch (S3Exception $e) { echo $e->getMessage() . "\n"; } // Use the plain API (returns ONLY up to 1000 of your objects). try { $result = $s3->listObjects(array('Bucket' => $bucket)); echo "Keys retrieved!\n"; foreach ($result['Contents'] as $object) { echo $object['Key'] . "\n"; } } catch (S3Exception $e) { echo $e->getMessage() . "\n"; }

相关资源

本页内容: