2012-09-26 101 views
0

我在我的存儲桶中啓用了版本控制,以防止覆蓋具有相同名稱的文件。當我在我的php應用程序中創建一個對象時,我需要將版本ID存儲在我的數據庫中以在刪除對象時使用。Amazon S3獲取上傳對象的版本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

爲什麼你要保留版本ID在你的數據庫中,你可以從版本列表中爲給定的前綴以及對象再次獲得版本ID。這將返回給定對象的所有版本。哪個標記哪個是最新的,哪個是刪除等。

我來自Bucket Explorer開發團隊,你可以用它來查看列表。

+0

你好,謝謝你的回覆。我剛剛開始使用S3。我不知道版本ID的全部潛力。我在我的數據庫中保存關於我上傳的所有對象的信息。我在刪除對象時使用db信息。當我刪除一個對象時,我已經在我的數據庫中有版本號,所以我沒有提出新的請求來獲取它。 (我不知道如何在PHP中獲得相應的版本ID,如果說更多的對象具有相同的名稱)。因此,我必須在上傳時獲取版本ID。 – CyberJunkie

0

是的,這是抓取上傳版本ID最有效的方法。

當S3已經爲你做了這些工作時,我仍然不清楚你在數據庫中存儲對象版本的版本ID的原因。通過調用AmazonS3::list_bucket_object_versions()並傳遞prefix值來專門定位存儲區中的單個對象,S3將返回該對象的所有相應版本ID的列表。

我希望這有助於! :)