Yii 2.0整合七牛雲
阿新 • • 發佈:2018-11-11
背景知識:
- 七牛雲就是我們常說的圖床。什麼是圖床?可以簡單理解為是一種儲存圖片資源的伺服器。
- 本文基於Yii2簡單介紹七牛雲的使用
1.首先在七牛雲平臺建立賬戶:傳送門
2.登陸賬戶之後,點選頭部選單管理控制檯,進入之後,點選左側選單儲存物件:
3.點選新建儲存空間,填寫響應的資訊,如下僅做參考:
4.建立好應用之後,接著我們要生成金鑰:點選右上角的個人面板,再點選金鑰管理,進入頁面之後,點選右下角的建立金鑰即可:
5.最後我們還需要一個資訊那就是資源的域名,可以在新建的儲存空間中看到:
如上資訊都配置成功之後,我們講解程式碼的實現:首先第一步安裝Yii2的七牛雲擴充套件,具體的安裝方式可以參考這篇部落格 傳送門,安裝成功之後,我們在配置檔案params.php中增加如下配置:
'qn_ak'=>'你自己的Ak',
'qn_sk'=>'你自己的AS',
'qn_domain'=>'資源域名',
'qn_bucket'=>'儲存空間名稱',
以下是一個簡單地demo:
use crazyfd\qiniu\Qiniu; $qiniu=new Qiniu( \Yii::$app->params['qn_ak'], \Yii::$app->params['qn_sk'], \Yii::$app->params['qn_domain'], \Yii::$app->params['qn_bucket'], 'east_china' ); //注意第五個引數,由於我們的儲存空間建立的時候選擇是華東的,因此傳入的字串的是'east_china', //具體可選值是哪些,可以檢視原始碼Qiniu.php /* $arr = [ //華東 'east_china' => [ 'up' => array("up.qiniup.com", 'up-nb.qiniup.com', 'up-xs.qiniup.com'), ], //華北 'north_china' => [ 'up' => array('up-z1.qiniup.com'), ], //華南機房 'south_china' => [ 'up' => array('up-z2.qiniup.com', 'up-gz.qiniup.com', 'up-fs.qiniup.com'), ], //北美機房 'north_america' => [ 'up' => array('up-na0.qiniup.com'), ] ]; */ //上傳操作 //生成一個唯一標識,這個key用來標識你上傳的資源 $key=md5(uniqid(mt_rand(),true)); try{ $qiniu->uploadFile($_FILES['Goods']['tmp_name']['picture'],$key); $url='http://'.$qiniu->getLink().$key; return $url; //之後可以通過這個$url訪問到剛上傳的資源 }catch(\Exception $e){ return false; } //刪除操作 try{ //刪除對應的資源 $qiniu->delete($key); return true; }catch(\Exception $e){ throw $e; }
最後補充一點:有時候我們會有縮圖這種需求,例如縮圖要求尺寸是300*400,傳統的做法就以原圖為基礎做裁剪,然後再生成一張圖片,但是在七牛雲中,我們可以使用如下的方案:
例如生成如下這樣子的樣式,並命名為small:
假設我們上傳了一張圖片並且訪問路徑是:http://p15o5mswx.bkt.clouddn.com/00113d3c6cb4cf3c84773711a8162b47,我們完全不需要再生成一張縮圖並上傳至七牛雲,而可以直接使用我們剛剛設定的樣式在原來的圖片上進行訪問,例如:http://p15o5mswx.bkt.clouddn.com/00113d3c6cb4cf3c84773711a8162b47-small