OSS は、オブジェクトの直接的な名前変更をサポートしていません。同じバケット内のオブジェクトの名前を変更するには、CopyObject 操作を呼び出してソースオブジェクトを宛先オブジェクトにコピーします。その後、DeleteObject 操作を呼び出してソースオブジェクトを削除します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、「OssClient の作成」をご参照ください。
サンプルコード
次のサンプルコードは、examplebucket バケット内のオブジェクト srcobject.txt の名前を destobject.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;
use OSS\CoreOssException;
// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。実際のエンドポイントを指定してください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名を指定します。例:examplebucket。
$bucket= "examplebucket";
// ソースオブジェクトの完全なパスを指定します。パスにバケット名を含めることはできません。例:srcobject.txt。
$fromObject = "srcobject.txt";
// 宛先オブジェクトの完全なパスを指定します。パスにバケット名を含めることはできません。例:destobject.txt。
$toObject = 'destobject.txt';
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// 同じバケット内で srcobject.txt オブジェクトを destobject.txt にコピーします。
$ossClient->copyObject($bucket, $fromObject,$bucket, $toObject);
// srcobject.txt オブジェクトを削除します。
$ossClient->deleteObject($bucket, $fromObject);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
print("Object ".$fromObject ." Rename complete" . PHP_EOL);説明
OSS はフォルダーの直接的な名前変更もサポートしていません。フォルダーの名前を変更するには、同じ方法でそのサブディレクトリとオブジェクトの名前を 1 つずつ変更する必要があります。
関連ドキュメント
ファイルの名称変更に使用される API 操作の詳細については、「CopyObject」および「DeleteObject」をご参照ください。