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 的最有效方式。

当 S3 已经为您执行此操作时,我仍然不清楚您将对象版本的版本 ID 存储在数据库中的原因。通过调用AmazonS3::list_bucket_object_versions()并传递一个prefix值以专门针对存储桶中的单个对象,S3 将返回该对象的所有对应版本 ID 的列表。

我希望这有帮助!:)

于 2012-10-05T07:05:46.907 回答