簡體   English   中英

PHP S3 SDK上傳對象,版本控制已關閉

[英]PHP S3 SDK upload object with versioning turned off

在瀏覽適用於PHP的Amazon S3 SDK時,在使用$this->s3Instance->putObject()進行一些有趣的操作之后,我現在想刪除這些對象。

但是,當我運行$this->s3Instance->deleteObject() ,返回的消息是"DeleteMarker":true ,並且一些研究表明該對象具有適當的版本控制,因此我無法完全刪除它,而只能將其標記為刪除。

所以我的問題是,當我putObject()可以將對象標記為沒有版本控制嗎? 我將這些對象放入的存儲桶將在父存儲桶中並啟用版本控制。 因此,假設父級存儲桶將所有內容排除在外。 我希望可以手動將對象的版本控制狀態設置為nope

如果不能,那么是否存在另一個使用deleteObject()方法,如果將版本控制設置為true,則該方法實際上將從s3中刪除該對象?

基本思想是刪除對象的所有版本。 所以像這樣:

use Aws\S3\S3Client;

$bucket = 'the-bucket-name';
$keyname = 'the-file-or-object-name;

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'the-region-you-want'
]);

// get all of the versions for a particular bucket
$versions = $s3->listObjectVersions(['Bucket' => $bucket])
    ->getPath('Versions');

$s3->deleteObjects([
    'Bucket'  => $bucket,
    'Delete' => [
        'Objects' => array_map(function ($version) {
          return [
              'Key'       => $version['Key'],
              'VersionId' => $version['VersionId']
        }, $versions),
    ],       
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM