このトピックでは、バケットからオブジェクトをローカルファイルにダウンロードする方法について説明します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 同じリージョン内の他の Alibaba Cloud サービスから Object Storage Service (OSS) にアクセスするには、内部エンドポイントを使用します。 サポートされているリージョンとエンドポイントの詳細については、リージョンとエンドポイントをご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、OssClient の作成をご参照ください。
権限
デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。 Alibaba Cloud アカウントに属する RAM ユーザーまたは RAM ロールは、デフォルトでは何の権限も持っていません。 Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 説明 |
GetObject |
| オブジェクトをダウンロードします。 |
| オブジェクトをダウンロードする際に、versionId を通じてオブジェクトのバージョンを指定する場合、この権限が必要です。 | |
| オブジェクトをダウンロードする際に、オブジェクトメタデータに X-Oss-Server-Side-Encryption: KMS が含まれている場合、この権限が必要です。 |
サンプルコード
次のコードは、examplebucket バケットから testfolder/exampleobject.txt オブジェクトをダウンロードします。 オブジェクトは、ローカルの D:\localpath ディレクトリに examplefile.txt として保存されます。
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
// 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名を指定します。 例:examplebucket
$bucket= "examplebucket";
// オブジェクトの完全なパスを指定します。 バケット名は含めないでください。 例:testfolder/exampleobject.txt
$object = "testfolder/exampleobject.txt";
// オブジェクトを examplefile.txt という名前のローカルファイルにダウンロードし、指定されたローカルパス (D:\\localpath) に保存します。 ローカルファイルが存在する場合、上書きされます。 存在しない場合は作成されます。
// ローカルパスを指定しない場合、ダウンロードされたファイルはサンプルプログラムが存在するプロジェクトのローカルパスに保存されます。
$localfile = "D:\\localpath\\examplefile.txt";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $localfile
);
// try-catch ブロックを使用して例外をキャッチします。 例外がキャッチされた場合、ダウンロードは失敗です。 例外がキャッチされない場合、ダウンロードは成功です。
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->getObject($bucket, $object, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK, ローカルファイル 'examplefile.txt' を確認してください" . "\n");
よくある質問
ダウンロード時にファイル名を変更するにはどうすればよいですか?
サンプルコードの $localfile パラメーターを使用して、ダウンロードしたファイルの名前を変更できます。 たとえば、バケットから exampleobject.txt をダウンロードし、指定したローカルパスに examplefile.txt として保存するには、パラメーターを $localfile = "D:\\localpath\\examplefile.txt"; に設定します。
関連ドキュメント
オブジェクトをローカルファイルにダウンロードする方法を示す完全なサンプルコードについては、GitHub のサンプルをご参照ください。
オブジェクトをローカルファイルにダウンロードするための API 操作の詳細については、GetObject をご参照ください。