我正在使用通过 composer 安装的 AWS SDK for PHP,版本 2.4.7。从 S3 存储桶中删除文件后,响应对象中的 DeleteMarker 键始终为空,即使该文件实际上已从 S3 中删除。文档指出,如果操作成功,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 键返回值?
更新:
如果我在密钥的开头添加一个斜杠,即使该文件仍从 S3 中删除,我也会收到错误的响应。
键“path/to/my/image.jpg”导致 DeleteMarker 具有空值 键“/path/to/my/image.jpg”导致 DeleteMarker 具有空值 false
但在这两种情况下,图像都会从 S3 存储桶中删除。