gpt4 book ai didi

php - S3 DeleteObject - DeleteMarker 总是返回空

转载 作者:可可西里 更新时间:2023-11-01 12:49:50 25 4
gpt4 key购买 nike

我正在使用通过 composer 安装的适用于 PHP 的 AWS 开发工具包版本 2.4.7。从 S3 存储桶中删除文件后,即使文件实际上已从 S3 中删除,响应对象中的 DeleteMarker 键始终为空。该文档指出,如果操作成功,则 DeleteMarker 应该为真,否则为假。

我的删除调用是:

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

响应是:

Guzzle\Service\Resource\Model Object
(
[structure:protected] =>
[data:protected] => Array
(
[DeleteMarker] =>
[VersionId] =>
[RequestId] => 2CC3EC60C4294CB5
)
)

如果我这样做:

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

$is_deleted 始终为假。即使删除操作实际上成功并且文件已从 S3 中删除,为什么没有针对 DeleteMarker 键返回值?

更新:

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

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

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

最佳答案

从 SDK v.1 转换?到 2.?, 我也遇到了不知道文件是否被删除的问题是否被删除)。

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

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

更改的理由是:新方法让您无需等待回复等即可触发大量删除请求。

物有所值。大卫

关于php - S3 DeleteObject - DeleteMarker 总是返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19537064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com