すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:オブジェクトのアップロード時のオブジェクトメタデータの設定

最終更新日:Mar 12, 2024

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';
}

OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\CoreOssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。  
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
$end point = "yourEndpoint";
// バケットの名前を指定します。 例: examplebucket. 
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 
$object = "exampledir/exampleobject.txt";
$content = file_get_contents(__FILE__);
$options=配列 (
    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=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
    );
    $ossClient = new OssClient($config);
    // オブジェクトのアップロード時にオブジェクトメタデータを設定します。 
    $ossClient->putObject($bucket、$object、$content、$options);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage()) 。 "\n");
    戻ります。}
print(__FUNCTION__) 。 ": OK" 。 "\n");
            

参考資料

  • オブジェクトのアップロード時にオブジェクトメタデータを設定するために使用される完全なサンプルコードについては、GitHubをご覧ください。

  • オブジェクトのアップロード時にオブジェクトメタデータを設定するために呼び出すことができるAPI操作の詳細については、「PutObject」をご参照ください。

よくある質問

オブジェクトをバケットにアップロードし、同時にオブジェクトのメタデータを設定する場合、バケット内の同じ名前の既存のオブジェクトが上書きされないようにするにはどうすればよいですか?

次のいずれかの方法を使用して、バケット内の同じ名前のオブジェクトが上書きされないようにすることができます。

  • バージョン管理の有効化

    バケットのバージョン管理を有効にすると、以前のバージョンと同じ名前の既存のオブジェクトが保持され、アップロードしたオブジェクトが現在のバージョンとして保存されます。 オブジェクトの以前のバージョンはいつでも復元できます。 詳細については、「バージョン管理の有効化」をご参照ください。

  • アップロードリクエストにx-oss-forbid-overwriteヘッダーを含める

    アップロード要求にx-oss-forbid-overwriteヘッダーを含め、ヘッダーをtrueに設定できます。 既存のオブジェクトと同じ名前のオブジェクトを宛先ディレクトリにアップロードすると、アップロードは失敗し、OSSはFileAlreadyExistsエラーを返します。 詳しくは、「PutObject」 をご参照ください。