Amazon S3 从 PHP 中删除空文件夹
Amazon S3 remove empty folder from PHP
我正在尝试删除对象,当所有对象都被删除后,我想删除主文件夹。
现在当我删除文件夹中的对象键时它工作正常,当文件夹为空时文件夹将被删除,但是当我点击最后一个主文件夹时(folder1/folder2/)和删除folder2后folder1一个是空的,我无法删除这个文件夹。
我的 php 代码是这样的。
$s3 = new S3Client([
'version' => 'latest',
'region' => AMAZON_S3_REGION,
'credentials' => [
'key' => AMAZON_KEY,
'secret' => AMAZON_SECRET
]
]);
$response = $s3->listObjects([
'Bucket' => AMAZON_S3_BUCKET,
'Prefix' => $prefix_dir
]);
$keys = [];
foreach($response['Contents'] AS $val) {
$keys[]['Key'] = $val['Key'];
}
$result = $s3->deleteObjects([
'Bucket' => AMAZON_S3_BUCKET,
'Objects' => $keys
]);
当我尝试单独删除文件夹路径时,我收到状态代码 204,但为什么呢?
而不是 deleteObjects
尝试使用 deleteMatchingObjects
并传递空 prefix
或匹配某个文件夹的字符串。
$s3->deleteMatchingObjects($bucket);
// or inner of folder
$s3->deleteMatchingObjects($bucket, 'folder1/');
我正在尝试删除对象,当所有对象都被删除后,我想删除主文件夹。
现在当我删除文件夹中的对象键时它工作正常,当文件夹为空时文件夹将被删除,但是当我点击最后一个主文件夹时(folder1/folder2/)和删除folder2后folder1一个是空的,我无法删除这个文件夹。
我的 php 代码是这样的。
$s3 = new S3Client([
'version' => 'latest',
'region' => AMAZON_S3_REGION,
'credentials' => [
'key' => AMAZON_KEY,
'secret' => AMAZON_SECRET
]
]);
$response = $s3->listObjects([
'Bucket' => AMAZON_S3_BUCKET,
'Prefix' => $prefix_dir
]);
$keys = [];
foreach($response['Contents'] AS $val) {
$keys[]['Key'] = $val['Key'];
}
$result = $s3->deleteObjects([
'Bucket' => AMAZON_S3_BUCKET,
'Objects' => $keys
]);
当我尝试单独删除文件夹路径时,我收到状态代码 204,但为什么呢?
而不是 deleteObjects
尝试使用 deleteMatchingObjects
并传递空 prefix
或匹配某个文件夹的字符串。
$s3->deleteMatchingObjects($bucket);
// or inner of folder
$s3->deleteMatchingObjects($bucket, 'folder1/');