Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 适用于 PHP 的 AWS 开发工具包 复制对象

此主题将指导您使用 适用于 PHP 的 AWS 开发工具包 中的类,将 Amazon S3 中的单个对象和多个对象从一个存储桶复制到另一个存储桶,或者复制到同一存储桶中。

注意

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

以下任务将引导您使用 PHP 开发工具包类复制已存储在 Amazon S3 中的对象。

复制对象

1

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

2

要复制对象,请执行 Aws\S3\S3Client::copyObject() 方法。您需要提供诸如源存储桶、源键名称、目标存储桶和目标键名称等信息。

以下 PHP 代码示例演示使用 copyObject() 方法复制已存储在 Amazon S3 中的对象。

Copy
use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Key Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Copy an object. $s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => $targetKeyname, 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", ));

以下任务将引导您使用 PHP 类在 Amazon S3 中创建对象的多个副本。

复制对象

1

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

2

要创建对象的多个副本,请执行对 Amazon S3 客户端 getCommand() 方法的批量调用,该方法是从 Guzzle\Service\Client 类继承的。您提供 CopyObject 命令作为第一个参数,提供包含源存储桶、源键名称、目标存储桶和目标键名称的数组作为第二个参数。

以下 PHP 代码示例演示对存储在 Amazon S3 中的对象创建多个副本。

Copy
use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Key Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Perform a batch of CopyObject operations. $batch = array(); for ($i = 1; $i <= 3; $i++) { $batch[] = $s3->getCommand('CopyObject', array( 'Bucket' => $targetBucket, 'Key' => "{targetKeyname}-{$i}", 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", )); } try { $successful = $s3->execute($batch); $failed = array(); } catch (\Guzzle\Service\Exception\CommandTransferException $e) { $successful = $e->getSuccessfulCommands(); $failed = $e->getFailedCommands(); }

例 复制 Amazon S3 中的对象

以下 PHP 示例演示使用 copyObject() 方法复制 Amazon S3 中的单个对象,使用 CopyObject 方法对 getcommand() 进行批量调用来创建对象的多个副本。

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Copy an object. $s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => "{$sourceKeyname}-copy", 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", )); // Perform a batch of CopyObject operations. $batch = array(); for ($i = 1; $i <= 3; $i++) { $batch[] = $s3->getCommand('CopyObject', array( 'Bucket' => $targetBucket, 'Key' => "{$sourceKeyname}-copy-{$i}", 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", )); } try { $successful = $s3->execute($batch); $failed = array(); } catch (\Guzzle\Service\Exception\CommandTransferException $e) { $successful = $e->getSuccessfulCommands(); $failed = $e->getFailedCommands(); }

相关资源

本页内容: