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

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

最終更新日:Nov 29, 2025

Object Storage Service (OSS) に格納されるオブジェクトは、キー、データ、およびオブジェクトのメタデータで構成されます。オブジェクトのメタデータは、オブジェクトのプロパティを記述します。これには、標準の HTTP ヘッダーとユーザー定義メタデータが含まれます。標準の HTTP ヘッダーを設定して、キャッシュポリシーや強制ダウンロードポリシーなどのカスタム HTTP リクエストポリシーを定義できます。また、ユーザー定義メタデータを設定して、オブジェクトの目的やプロパティを識別することもできます。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名またはセキュリティトークンサービス (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;

// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに置き換えます。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケット名を指定します。例:examplebucket。
$bucket= "examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例: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-defined meta info',
    ));
try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // オブジェクトのアップロード時にメタデータを設定します。
    $ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
            

関連ドキュメント

  • オブジェクトのアップロード時にメタデータを設定する方法を示す完全なサンプルコードについては、GitHub をご参照ください。

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

よくある質問

オブジェクトのアップロード時にメタデータを設定する際、同名のオブジェクトが上書きされないようにするにはどうすればよいですか。

バケット内で同名のオブジェクトが上書きされるのを防ぐには、次のいずれかの方法を使用します:

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

    バージョン管理を有効にすると、バケット内で上書きされたオブジェクトは履歴バージョンとして保存されます。履歴バージョンはいつでも復元できます。詳細については、「バージョン管理の有効化」をご参照ください。

  • 上書きを防止するためのパラメーターをアップロードリクエストに含める

    アップロードリクエストのヘッダーに x-oss-forbid-overwrite パラメーターを含め、その値を true に設定します。バケット内に既存のオブジェクトと同名のオブジェクトをアップロードすると、アップロードは失敗し、FileAlreadyExists エラーが返されます。詳細については、「PutObject」をご参照ください。