1. 程式人生 > >Yii 2.0整合七牛雲

Yii 2.0整合七牛雲

背景知識:

  1. 七牛雲就是我們常說的圖床。什麼是圖床?可以簡單理解為是一種儲存圖片資源的伺服器。
  2. 本文基於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