Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

PHP SDK の低レベル API を使用した、複数のパートに分けたファイルのアップロード

このトピックでは、バージョン 3 の AWS SDK for PHP の低レベルメソッド uploadPart を使用してファイルを複数のパートに分割してアップロードする方法について説明します。この例では、「AWS SDK for PHP の使用と PHP サンプルの実行」の手順に従い、AWS SDK for PHP を適切にインストール済みであるものとします。

次の PHP の例では、低レベルの PHP API マルチパートアップロードを使用して、Amazon S3 バケットにファイルをアップロードします。PHP 例の実行方法については、このガイド内の「PHP サンプルの実行」を参照してください。

<?php require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $filename = '*** Path to and Name of the File to Upload ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); $result = $s3->createMultipartUpload([ 'Bucket' => $bucket, 'Key' => $keyname, 'StorageClass' => 'REDUCED_REDUNDANCY', 'ACL' => 'public-read', 'Metadata' => [ 'param1' => 'value 1', 'param2' => 'value 2', 'param3' => 'value 3' ] ]); $uploadId = $result['UploadId']; // Upload the file in parts. try { $file = fopen($filename, 'r'); $partNumber = 1; while (!feof($file)) { $result = $s3->uploadPart([ 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId, 'PartNumber' => $partNumber, 'Body' => fread($file, 5 * 1024 * 1024), ]); $parts['Parts'][$partNumber] = [ 'PartNumber' => $partNumber, 'ETag' => $result['ETag'], ]; $partNumber++; echo "Uploading part {$partNumber} of {$filename}." . PHP_EOL; } fclose($file); } catch (S3Exception $e) { $result = $s3->abortMultipartUpload([ 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId ]); echo "Upload of {$filename} failed." . PHP_EOL; } // Complete the multipart upload. $result = $s3->completeMultipartUpload([ 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId, 'MultipartUpload' => $parts, ]); $url = $result['Location']; echo "Uploaded {$filename} to {$url}." . PHP_EOL;

関連リソース

このページの内容: