Object Storage Service (OSS) に保存されているオブジェクトは、キー、データ、およびオブジェクトメタデータで構成されます。 オブジェクトメタデータは、オブジェクトを記述する。 オブジェクトメタデータには、標準HTTPヘッダーとユーザーメタデータが含まれます。 標準のHTTPヘッダーを設定することで、オブジェクトキャッシュポリシーや強制オブジェクトダウンロードポリシーなどのカスタムHTTPリクエストポリシーを作成できます。 オブジェクトのユーザーメタデータを設定して、オブジェクトの目的または属性を識別できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョン、エンドポイント、オープンポート」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。
オブジェクトメタデータを設定するには、
oss:PutObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
サンプルコード
次のサンプルコードは、オブジェクトをアップロードするときにオブジェクトメタデータを設定する方法の例を示しています。
アップロードするオブジェクトのオブジェクトメタデータを構成する前に、アップロードするオブジェクトと同じ名前の既存のオブジェクトがディレクトリに含まれているかどうかを確認して、偶発的なオブジェクトの上書きを防ぎます。 詳細については、「オブジェクトをバケットにアップロードし、同時にオブジェクトのメタデータを設定する場合、バケット内の同じ名前の既存のオブジェクトが上書きされないようにするにはどうすればよいですか? 」をご参照ください。
<?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;
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
$provider = new EnvironmentVariableCredentialsProvider();
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Specify the name of the bucket. Example: examplebucket.
$bucket= "examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
$object = "exampledir/exampleobject.txt";
$content = file_get_contents(__FILE__);
$options = array(
OssClient::OSS_HEADERS => array(
'Expires' => '2012-10-01 08:00:00',
'Content-Disposition' => 'attachment; filename="xxxxxx"',
'x-oss-meta-self-define-title' => 'user define meta info',
));
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Configure object metadata when you upload the object.
$ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
関連ドキュメント
よくある質問
オブジェクトをバケットにアップロードし、同時にオブジェクトのメタデータを設定する場合、バケット内の同じ名前の既存のオブジェクトが上書きされないようにするにはどうすればよいですか?
次のいずれかの方法を使用して、バケット内の同じ名前のオブジェクトが上書きされないようにすることができます。
バージョン管理の有効化
バケットのバージョン管理を有効にすると、以前のバージョンと同じ名前の既存のオブジェクトが保持され、アップロードしたオブジェクトが現在のバージョンとして保存されます。 オブジェクトの以前のバージョンはいつでも復元できます。 詳細については、「バージョン管理の有効化」をご参照ください。
アップロードリクエストにx-oss-forbid-overwriteヘッダーを含める
アップロード要求にx-oss-forbid-overwriteヘッダーを含め、ヘッダーをtrueに設定できます。 既存のオブジェクトと同じ名前のオブジェクトを宛先ディレクトリにアップロードすると、アップロードは失敗し、OSSはFileAlreadyExistsエラーを返します。 詳しくは、「PutObject」 をご参照ください。