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 开发工具包类复制已存储在 Amazon S3 中的对象。

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

复制对象

1

使用 Aws\S3\S3Client 类构造函数创建 Amazon S3 客户端的实例。

2

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

例 复制 Amazon S3 中的对象

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

<?php require 'vendor/autoload.php'; use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Copy an object. $s3->copyObject([ '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', [ 'Bucket' => $targetBucket, 'Key' => "{targetKeyname}-{$i}", 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", ]); } try { $succeeded = $s3->execute($batch); $failed = array(); } catch (CommandTransferException $e) { $succeeded = $e->getSuccessfulCommands(); echo "Failed Commands:" . PHP_EOL; foreach ($e->getFailedCommands() as $failedCommand) { echo $e->getExceptionForFailedCommand($FailedCommand)->getMessage() . PHP_EOL; } }

相关资源

本页内容: