Amazon S3在上传时获取对象的版本ID

时间:2012-09-26 17:39:41

标签: php api amazon-s3 amazon-web-services

我在我的存储桶中启用了版本控制,以防止覆盖具有相同名称的文件。当我在我的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。我非常感谢你的建议。

2 个答案:

答案 0 :(得分:2)

为什么要在您的数据库中保留版本ID,您可以从版本列表中再次获取给定前缀和对象的版本ID。这将返回给定对象的所有版本。哪一个是最新的标记,哪一个是删除等。

我来自Bucket Explorer的开发团队,您可以使用它查看列表。

答案 1 :(得分:0)

是的,这是在上传时获取版本ID的最有效方式。

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

我希望这有帮助! :)