我在我的存储桶中启用了版本控制,以防止覆盖具有相同名称的文件。当我在我的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。我非常感谢你的建议。
答案 0 :(得分:2)
为什么要在您的数据库中保留版本ID,您可以从版本列表中再次获取给定前缀和对象的版本ID。这将返回给定对象的所有版本。哪一个是最新的标记,哪一个是删除等。
我来自Bucket Explorer的开发团队,您可以使用它查看列表。
答案 1 :(得分:0)
是的,这是在上传时获取版本ID的最有效方式。
当S3已经为您执行此操作时,我仍然不清楚您在数据库中存储对象版本的版本ID的原因。通过调用AmazonS3::list_bucket_object_versions()并传递prefix
值来专门定位存储桶中的单个对象,S3将返回该对象的所有相应版本ID的列表。
我希望这有帮助! :)