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.

使用适用于分段上传的 AWS PHP 开发工具包 (高级别 API)

Amazon S3 允许以多个分段的形式上传大型文件。您必须将分段上传用于大于 5 GB 的文件。适用于 PHP 的 AWS 开发工具包公开了高级别 Aws\S3\Model\MultipartUpload\UploadBuilder 类,用于简化分段上传。

Aws\S3\Model\MultipartUpload\UploadBuilder 类最适合用于简单分段上传。如果您需要暂停和恢复分段上传、在上传期间更改段大小或者事先不知道数据大小,则应使用低级别 PHP API。有关更多信息,请参阅 使用适用于分段上传的 AWS PHP 开发工具包 (低级别 API)

有关分段上传的更多信息,请参阅使用分段上传 API 上传对象。有关上传大小小于 5GB 的文件的信息,请参阅使用 适用于 PHP 的 AWS 开发工具包 上传对象

使用高级别分段上传来上传文件

本主题将指导您完成使用适用于 PHP 的 AWS 开发工具包中的高级别 Aws\S3\Model\MultipartUpload\UploadBuilder 类进行分段文件上传的过程。

注意

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

高级别分段文件上传过程

1

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

2

使用 Amazon S3 Aws\S3\Model\MultipartUpload\UploadBuildernewInstance() 方法 (继承自 Aws\Common\Model\MultipartUpload\AbstractUploadBuilder 类) 创建 UploadBuilder 的实例。对于 UploadBuilder 对象,请使用 setClient()setBucket()setKey() 方法设置客户端、存储桶名称和键名称。使用 setSource() 方法设置要上传的文件的路径和名称。

3

执行 UploadBuilder 对象的 build() 方法,以基于设置的生成器选项生成合适的上传工具传输对象。 (传输对象属于 Aws\S3\Model\MultipartUpload\AbstractTransfer 类的子类。)

4

执行生成的传输对象的 upload() 方法以执行上传。

以下 PHP 代码示例演示如何使用高级别 UploadBuilder 对象上传文件。

Copy
use Aws\Common\Exception\MultipartUploadException; use Aws\S3\Model\MultipartUpload\UploadBuilder; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Prepare the upload parameters. $uploader = UploadBuilder::newInstance() ->setClient($s3) ->setSource('/path/to/large/file.mov') ->setBucket($bucket) ->setKey($keyname) ->build(); // Perform the upload. Abort the upload if something goes wrong. try { $uploader->upload(); echo "Upload complete.\n"; } catch (MultipartUploadException $e) { $uploader->abort(); echo "Upload failed.\n"; echo $e->getMessage() . "\n"; }

例 使用高级别 UploadBuilder 将文件分段上传到 Amazon S3 存储桶

以下 PHP 代码示例将文件上传到 Amazon S3 存储桶。该示例演示如何为 UploadBuilder 对象设置高级选项。例如,您可以使用 setMinPartSize() 方法设置您要用于分段上传的段大小,并使用 setOption() 方法设置可选文件元数据或访问控制列表 (ACL)。

该示例还演示如何通过使用 setConcurrency() 方法为 UploadBuilder 对象设置并发选项,来并行上传各文件段。该示例创建一个传输对象,该对象将尝试并行上传三个段,直至整个文件都已上传。有关运行本指南中的 PHP 示例的信息,请参阅运行 PHP 示例

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\Common\Exception\MultipartUploadException; use Aws\S3\Model\MultipartUpload\UploadBuilder; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Prepare the upload parameters. $uploader = UploadBuilder::newInstance() ->setClient($s3) ->setSource('/path/to/large/file.mov') ->setBucket($bucket) ->setKey($keyname) ->setMinPartSize(25 * 1024 * 1024) ->setOption('Metadata', array( 'param1' => 'value1', 'param2' => 'value2' )) ->setOption('ACL', 'public-read') ->setConcurrency(3) ->build(); // Perform the upload. Abort the upload if something goes wrong. try { $uploader->upload(); echo "Upload complete.\n"; } catch (MultipartUploadException $e) { $uploader->abort(); echo "Upload failed.\n"; echo $e->getMessage() . "\n"; }

相关资源

本页内容: