【发布时间】:2021-12-16 17:27:05
【问题描述】:
我正在尝试实现一项功能,该功能有助于通过单击我网站上的按钮来删除我的 s3 存储桶中的对象。到目前为止,我已经能够成功实现文件的上传,但是使用 AWS SDK for php 删除它们似乎是不可能的。以下是我已经实现的。
<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
class Delete{
function deleteS3object(string $bucketname, string $keyfilename){
$bucket = $bucketname;
$keyname = $keyfilename;
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-2'
]);
// 1. Delete the object from the bucket.
try
{
echo 'Attempting to delete ' . $keyname . '...' . PHP_EOL;
$result = $s3->deleteObject([
'Bucket' => $bucket,
'Key' => $keyname
]);
if ($result['DeleteMarker'])
{
echo $keyname . ' was deleted or does not exist.' . PHP_EOL;
} else {
exit('Error: ' . $keyname . ' was not deleted.' . PHP_EOL);
}
}
catch (S3Exception $e) {
exit('Error: ' . $e->getAwsErrorMessage() . PHP_EOL);
}
// 2. Check to see if the object was deleted.
try
{
echo 'Checking to see if ' . $keyname . ' still exists...' . PHP_EOL;
$result = $s3->getObject([
'Bucket' => $bucket,
'Key' => $keyname
]);
echo 'Error: ' . $keyname . ' still exists.';
}
catch (S3Exception $e) {
exit($e->getAwsErrorMessage());
}
return;
}
}
$x = new Delete();
$success = $x->deleteS3object('bucketname', 'file.png') ? 'deleted': 'Error';
echo $success;
?>
但它为我返回 500 错误通知,有什么可能做错了吗?
【问题讨论】: