从s3 bucket php删除包含文件的文件夹

时间:2018-10-02 14:24:39

标签: php amazon-web-services amazon-s3

我正在尝试删除s3存储桶中的一个文件夹,该文件夹位于一个名为CreativeEngine的文件夹中,其文件夹结构如下所示:CreativeEngine / 8943 我想删除名为8943的文件夹,但其中包含文件。我需要先执行某种循环才能删除文件吗?还是可以删除文件夹?我试过了,但是没有用

    <?php 
$itemId=$_GET['id'];
    require('s3/vendor/autoload.php');
        use Aws\S3\S3Client;
        use Aws\S3\Exception\S3Exception;
        // AWS Info
        $bucketName = 'mybucket';
        $IAM_KEY = 'mykey';
        $IAM_SECRET = 'mysecret';
        // Connect to AWS
            $s3 = S3Client::factory(
                array(
                    'credentials' => array(
                        'key' => $IAM_KEY,
                        'secret' => $IAM_SECRET
                    ),
                    'version' => 'latest',
                    'region'  => 'us-east-2'
                )
            );


    $s3Destination='CreativeEngine/'.$itemId;
    $keyName = $s3Destination;

    try{
    $s3->deleteObject(array(
        'Bucket' => $bucketName,
        'Key'    => $keyName
    ));       
    } catch (S3Exception $e) {
    $data['message']='<li>error'.$e->getMessage().'</li>';
    }
    ?>

1 个答案:

答案 0 :(得分:0)

这可以通过 delete_all_objects($ bucket,$ pcre)进行,其中$pcre是可选的与Perl兼容的正则表达式(PCRE),可以根据名称过滤(默认值为PCRE_ALL,即"/.*/i"),例如:

$s3 = new AmazonS3();
$response = $s3->delete_all_objects($bucket, "#myDirectory/.*#");