メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for PHP を使用したオブジェクトの取得

このトピックでは、AWS SDK for PHP のクラスを使用して、オブジェクトを取得する手順を示します。オブジェクトの全体を取得することも、またはオブジェクトから取得する特定のバイト範囲を指定することもできます。

注記

このトピックでは、既に AWS SDK for PHP の使用と PHP サンプルの実行 の説明が実行されていて、AWS SDK for PHP が正しくインストールされていることを前提としています。

オブジェクトのダウンロード

1

Amazon S3 クライアントのインスタンスを Aws\S3\S3Client クラスの factory() メソッドを使用して作成します。

2

Aws\S3\S3Client::getObject() メソッドを実行します。array パラメーターの必須キー、BucketKey に、バケット名とキー名を指定する必要があります。

オブジェクト全体を取得する代わりに、オプションでオブジェクトデータの特定のバイト範囲を取得することもできます。範囲の値を指定するには、必要なキーのほかに array パラメーターの Range キーを指定します。

Amazon S3 から取得したオブジェクトはファイルに保存できます。保存するには、必要なキー、BucketKey のほかに、array パラメーターの SaveAs キーにファイルの保存場所へのファイルパスを指定します。

以下の PHP コード例は、オブジェクトをダウンロードするための前述のタスクを実装したものです。

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $filepath = '*** Your File Path ***'; // Instantiate the client. $s3 = S3Client::factory(); // Get an object. $result = $s3->getObject(array( 'Bucket' => $bucket, 'Key' => $keyname )); // Get a range of bytes from an object. $result = $s3->getObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'Range' => 'bytes=0-99' )); // Save object to a file. $result = $s3->getObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'SaveAs' => $filepath ));

オブジェクトを取得するときは、オプションでレスポンスヘッダーの値を上書きすることもできます(「オブジェクトの取得」を参照)。上書きするには、次の PHP コード例に示すとおり、array パラメーターのレスポンスキー、ResponseContentTypeResponseContentLanguageResponseContentDispositionResponseCacheControl、および ResponseExpiresgetObject() メソッドに追加します。

Copy
$result = $s3->getObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'ResponseContentType' => 'text/plain', 'ResponseContentLanguage' => 'en-US', 'ResponseContentDisposition' => 'attachment; filename=testing.txt', 'ResponseCacheControl' => 'No-cache', 'ResponseExpires' => gmdate(DATE_RFC2822, time() + 3600), ));

例 (PHP を使用したオブジェクトのダウンロード)

次の PHP コード例では、オブジェクトを取得し、そのコンテンツをブラウザに表示します。この例は、getObject() メソッドの使い方を示しています。PHP 例の実行については、このガイド内の「PHP サンプルの実行」を参照してください。

Copy
<?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 ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); try { // Get the object $result = $s3->getObject(array( 'Bucket' => $bucket, 'Key' => $keyname )); // Display the object in the browser header("Content-Type: {$result['ContentType']}"); echo $result['Body']; } catch (S3Exception $e) { echo $e->getMessage() . "\n"; }

関連リソース

このページの内容: