PHP 使用 OSS 批量刪除圖片

1、控制器 OssImageController.php(不必關注此層)

<?php
declare(strict_types = 1);
namespace app\controllers;
use app\services\OssImageService;
class OssImageController extends BaseController
{
    /**
     * oss 批量刪除圖片
     *
     * @throws null
     */
    public function actionDelImage()
    {
        $data = OssImageService::service()->batchDelImage($this->params);
        $this->response([], $data['status'], $data['msg']);
    }
}

 

2、service 層 OssImageService.php(業務實現層)

<?php
declare(strict_types = 1);
namespace app\services;
use app\extensions\AliOss;
use app\extensions\Helper;
class OssImageService extends BaseService
{
    /**
     * 批量刪除oss圖片
     *
     * @param array $params
     * @return array
     * @throws null
     */
    public function batchDelImage(array $params)
    {
        /*$params['images'] = [
            'https://hk-server.oss-cn-hongkong.aliyuncs.com/blog/article-in/2018-08-23/010494376.jpg',
            'https://hk-server.oss-cn-hongkong.aliyuncs.com/blog/article-in/2018-08-23/011832527.jpg'
        ];*/
        if (!isset($params['images']) || empty($params['images'])) {
            return Helper::msg(0, '請選擇需要刪除的圖片');
        }
        if (!is_array($params['images'])) {
            return Helper::msg(0, '刪除圖片格式錯誤,請傳數組格式');
        }
        $ossHttpUrl = 'https://'.AliOss::bucket.'.'.AliOss::endpoint.'/';
        $ossHttpsUrl = 'http://'.AliOss::bucket.'.'.AliOss::endpoint.'/';
        $objectArray = $params['images'];
        // 將每一個鏈接的協議+bucketName+endpoint替換成'' (即去掉這部分string)
        foreach ($objectArray as &$v) {
            $v = str_replace($ossHttpUrl, '', $v);
            $v = str_replace($ossHttpsUrl, '', $v);
        }
        $ossClient  = AliOss::getOssClient();
        $bucketName = AliOss::getBucketName();
        // 執行批量刪除
        $ossClient->deleteObjects($bucketName, $objectArray);
        return Helper::msg(1, '刪除素材圖片成功');
    }
}

 

3、說明

雖然阿里雲 oss 提供了批量刪除文件的方法,但這裏仍然不建議使用,因爲存在着操作風險,建議刪除文件的操作還是在控制檯手動操作。  

 

注:免費領取阿里雲產品優惠券:https://www.haveyb.com/aliyun

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章