加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – S3 DeleteObject – DeleteMarker始终返回空

发布时间:2020-12-13 18:03:07 所属栏目:PHP教程 来源:网络整理
导读:我正在使用AWS SDK for PHP,版本2.4.7通过composer安装.从S3存储桶中删除文件后,即使文件实际已从S3中删除,响应对象中的DeleteMarker键也始终为空.文档说明如果操作成功则DeleteMarker应为true,否则为false. 我的删除电话是: // delete S3 object $result =
我正在使用AWS SDK for PHP,版本2.4.7通过composer安装.从S3存储桶中删除文件后,即使文件实际已从S3中删除,响应对象中的DeleteMarker键也始终为空.文档说明如果操作成功则DeleteMarker应为true,否则为false.

我的删除电话是:

// delete S3 object
    $result = $s3->deleteObject(array(
        'Bucket' => $this->_bucket,'Key' => $object_key,));

并且响应是:

GuzzleServiceResourceModel Object
(
    [structure:protected] =>
    [data:protected] => Array
        (
            [DeleteMarker] =>
            [VersionId] =>
            [RequestId] => 2CC3EC60C4294CB5
        )
)

如果我那么做:

// check if was deleted
    $is_deleted = (bool) $result->get('DeleteMarker');

$is_deleted始终为false.如果删除操作实际上成功并且文件已从S3中删除,那么对于DeleteMarker键没有返回任何值是怎么回事?

更新:

如果我在我的键的开头添加一个斜杠,即使文件仍然从S3中删除,我也会得到一个错误的响应.

键“path / to / my / image.jpg”导致DeleteMarker具有空值
键“/path/to/my/image.jpg”导致DeleteMarker为空false

但在这两种情况下,图像都会从S3存储桶中删除.

从SDK v.1转换.?到2.?,我也遇到了不知道文件是否被删除的问题(曾经是 – > isOK()方法几乎所有让我知道文件是否被删除的方法).

我终于偶然发现了Guzzle创作者的回应:https://forums.aws.amazon.com/thread.jspa?messageID=455154

基本上,不再有任何“删除”标志. Michael(Guzzle)建议的是:如果你想知道文件是否被删除,请使用 – > deleteObject()然后运行 ??- > doesObjectExist()来查看删除是否成功.

更改的基本原理是:新方法允许您触发大量删除请求,而无需等待回复等.

物有所值.大卫

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读