1

同じ名前のファイルが上書きされないように、バケットでバージョン管理を有効にしました。PHP アプリでオブジェクトを作成するとき、オブジェクトを削除するときに使用するバージョン ID をデータベースに保存する必要があります。

現在、アップロードから返されたヘッダー応答からバージョン ID を取得しています

//upload the file           
$response = $s3->create_object($bucket, $filename, array(
    'fileUpload' => $filepath,
    'acl' => AmazonS3::ACL_PUBLIC,
    'contentType' => $this->upload->file_type,
    'storage'     => AmazonS3::STORAGE_REDUCED,         
));

//get version id 
$version_id' => $response->header['x-amz-version-id'];

これは正しい方法ですか?オブジェクトを削除するときにバージョン ID を使用する必要があり、アップロード時に対応するオブジェクトのバージョン ID をデータベースに保存する必要があります。アドバイスをいただければ幸いです。

4

2 に答える 2

1

データベースにバージョン ID を保持しているのはなぜですか。指定されたプレフィックスとオブジェクトのバージョン リストから、そのバージョン ID を再度取得できます。これにより、指定されたオブジェクトのすべてのバージョンが返されます。どのマーカーがどれが最新でどれが削除されているかなど

私は Bucket Explorer の開発チームから来ました。それを使用してリストを確認できます。

于 2012-09-27T07:00:09.987 に答える
-1

はい、これがアップロード時にバージョン ID を取得する最も効率的な方法です。

オブジェクト バージョンのバージョン ID をデータベースに保存する理由については、S3 が既に行っているのに、まだ少しわかりません。AmazonS3::list_bucket_object_versions()を呼び出し、値を渡しprefixてバケット内の単一のオブジェクトを明確にターゲットにすることにより、S3 はそのオブジェクトに対応するすべてのバージョン ID のリストを返します。

これが役立つことを願っています!:)

于 2012-10-05T07:05:46.907 に答える