使用php Yii2在Amazon S3中删除对象(单个图像)不起作用?

时间:2018-09-19 06:34:30

标签: php amazon-s3 yii2

这里有连接代码

 $s3 = S3Client::factory(array(
           'key'    => 'xxxxxxxxx',
           'secret' => '0xxxxxxxxxx',
           'version' => 'latest',
           'region' => 'us-west-2',
     ))

以下是存储桶名称$bucket = 'ariana-ios-storages';,此处是文件$p = parse_url($images->name)的名称,即 亚马逊中要删除的文件名;

这是删除文件的代码

$delete =  $s3->deleteObject([
               'Bucket' => $bucket,
               'Key'    => $p['path']
            ]);
        var_dump($delete);
        exit();

生成的文件路径类似于this;

它不是从存储桶中删除单个文件,所以任何人都可以帮助我丢失的东西

1 个答案:

答案 0 :(得分:0)

  public function actionDeleteImages($id)
  {
    $exportImage=  \common\models\ExportImages::findOne($id);
    $base_url='base url to bucket';
    $s3 = S3Client::factory(array(
        'key'    => 'xxxxxxx',
        'secret' => '0pdfOx21xxxxxxxxxx',
            'version' => 'latest',
            'region' => 'us-west-2',
    ));
    $bucket = 'name of bucket';
    $key=urldecode(explode($base_url,$exportImage->name)[1]);// $images->name is  Path from Db, base url is path to s3 server
    $delete =  $s3->deleteObject([
        'Bucket' => 'ariana-ios-storages',
        'Key' => $key
    ]);
    $object_exist =  $s3->doesObjectExist($bucket,$key);
    if(!$object_exist){
        return "succesfully deleted";
    }else{
        return "there is some problem while procesing the deletion";
    }
  }

}