2017-01-05 3 views
0

Я пытаюсь удалить объекты, и когда все объекты удалены, я хочу удалить основную папку.Amazon S3 удалить пустую папку из PHP

сейчас его работа прекрасна, когда я удаляю ключ объекта в папке, а когда папка пуста, папка будет удалена, но когда я нахожусь в последней основной папке, такой как (folder1/folder2 /) и folder1, пусто после удаления папки2, я не могу удалить эту папку.

мой код 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, но почему?

ответ

1

Вместо deleteObjects попробуйте использовать deleteMatchingObjects и проходить пустой prefix или string matching some folder.

$s3->deleteMatchingObjects($bucket); 
// or inner of folder 
$s3->deleteMatchingObjects($bucket, 'folder1/'); 
+0

любезно, спасибо большое :) теперь я сэкономлю много кода. – ParisNakitaKejser