php laravel 將任意文件地址下載到本地再長傳到OSS

 

傳入圖片鏈接地址,即可下載到第二個參數對應的目錄下面

if(copy(trim($img_url), base_path().'/public/' . basename($img_url))) {
      echo "遠程圖片下載成功";die;
}

使用場景,我要把一張表的所有logo圖片存到oss上 然後再把表中的路徑改成自己的阿里雲oss的url

代碼:

$itemCategory = ItemCategory::where(['status'=>1])->get();
        foreach($itemCategory as $v){
            if($v->id!=26 && isset($v->logo)&&$v->logo){
                $img_url = $v['logo'];
                $baseName =  basename($img_url);
                $local_name = base_path().'/public/' .$baseName;
                if(copy(trim($img_url), $local_name)) {
//                    echo "遠程圖片下載成功";die;
                    $ossFileName = implode('/', ['upload/image', date('Ymd'), $baseName]);
                    try {
                        $config = config('services.oss');
                        //實例化對象 將配置傳入
                        $ossClient = new OssClient($config['access_key'], $config['secret_key'], $config['endpoint']);
                        $result = $ossClient->uploadFile($config['bucket'], $ossFileName, $local_name);
                        $arr = [
                            'oss_url' => $result['info']['url'],  //上傳資源地址
                            'relative_path' => $ossFileName     //數據庫保存名稱(相對路徑)
                        ];
                        $v->logo = $arr['relative_path'];
                        $v->save();
                    } catch (OssException $e) {
                        return $e->getMessage();
                    }
                }
            }
        }

 

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