YII2.0 接入阿里雲的OSS對象存儲

找了半天資料,終於是搞定了YII2.0接入OSS對象存儲了。這裏假定你已經安裝了YII2.0,已經安裝的compose。
第一步:我們安裝下oss對象組件(也就是OSS的PHP API)控制檯進入到YII2.0的根目錄輸入:composer require aliyuncs/oss-sdk-php,然後就安裝,安裝好後再根目錄裏的verdor下有aliyuncs文件夾如圖:
這裏寫圖片描述
這裏就已經安裝好OSS的對象存儲API了,接下來就是和YII2.0整合在一起。
第二部:在根目錄下新建common/components/兩個文件夾,然後在components文件夾裏面新建一個文件Aliyunoss.php,如圖
這裏寫圖片描述
接着我們在配置文件配置這個組件:

'Aliyunoss' => [
            'class' => 'app\common\components\Aliyunoss',
        ],

如圖:
這裏寫圖片描述
這裏YII2.0定義一個組件就成功了,然後我們就在這個組件寫oss的API邏輯代碼,先配置下oss,在params文件裏配置OSS如圖:

這裏寫圖片描述
四個參數在oss後臺可以找到。到這裏YII2.0和oss就整合好了。接下來就敲代碼.
第三部:在common/components/Aliyunoss文件裏寫如下代碼:

<?php

namespace app\common\components;

use Yii;
use yii\base\Component;
use OSS\OssClient;
use OSS\Croe\OssException;


class Aliyunoss extends Component
{
    public static $oss;

    public function __construct()
    {
        parent::__construct();
        $accessKeyId = Yii::$app->params['oss']['accessKeyId'];                 //獲取阿里雲oss的accessKeyId
        $accessKeySecret = Yii::$app->params['oss']['accessKeySecret'];         //獲取阿里雲oss的accessKeySecret
        $endpoint = Yii::$app->params['oss']['endPoint'];                       //獲取阿里雲oss的endPoint
        self::$oss = new OssClient($accessKeyId, $accessKeySecret, $endpoint);  //實例化OssClient對象
    }



   //刪除文件/或文件夾
   public function del_file()
   {
        $res = false;
        $bucket = Yii::$app->params['oss']['bucket'];    //獲取阿里雲oss的bucket
        if (self::$oss->deleteObject($bucket, "wocao/")){
        //調用deleteObject方法把服務器文件上傳到阿里雲oss
            $res = true;
        }
        return $res;
   }



   //上傳文件
   public function upload_file()
   {
        try
        {
            $bucket = Yii::$app->params['oss']['bucket'];

            $a = self::$oss->uploadFile($bucket, time()."."."png", "kwk.png");
            print_r($a);
            echo "success";
        }
        catch(OssException $e)
        {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
   }

   //下載文件
   public function down_file()
   {
        $localfile ="yuzengyuan."."jpg";

        $options = array(
            OssClient::OSS_FILE_DOWNLOAD => $localfile,
        );
        try
        {
             $bucket = Yii::$app->params['oss']['bucket'];
             self::$oss->getObject($bucket, "1513585444.png", $options);
        } 
        catch( OssException $e) 
        {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");

            return;
        }
        print(__FUNCTION__ . ": OK, " .$localfile. "\n");
   }

   //判斷是否存在文件
   function doesObjectExist()
    {

        try{
            $bucket = Yii::$app->params['oss']['bucket'];
            $exist = self::$oss->doesObjectExist($bucket, $object);
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        print(__FUNCTION__ . ": OK" . "\n");
        var_dump($exist);
    }



   //創建虛擬目錄
   public function create_dir()
   {
        try
        {
            self::$oss->createObjectDir("budfesdfd", "dirrrr");
        }
        catch(OssException $e) 
        {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        print(__FUNCTION__ . ": OK" . "\n");
   }

   //刪除虛擬目錄
   function createObjectDir() 
   {

        try{
            $bucket = Yii::$app->params['oss']['bucket'];
            self::$oss->createObjectDir($bucket, "phpyuzengyuan");
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        print(__FUNCTION__ . ": OK" . "\n");
    }



   //列出用戶所有的存儲空間
   public function listBuckets()
    {
        $bucketList = null;
        try{
            $bucketListInfo = self::$oss->listBuckets();
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        $bucketList = $bucketListInfo->getBucketList();
        foreach($bucketList as $bucket) {
          echo $bucket->getLocation() . "<br>" . $bucket->getName() . "<br>" . $bucket->getCreatedate() . "<br>";
          echo "<hr>";
        }
    }

     //創建儲存空間
   public function create_Bucket()
   {
         try
         {
            self::$oss->createBucket("budfesdfd");
         } 
         catch(OssException $e) 
         {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
         }
         echo "success";
   }

    //刪除存儲空間
    function deleteBucket()
    {
        try{
            self::$oss->deleteBucket("yuzengbdfds");
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        print(__FUNCTION__ . ": OK" . "\n");
    }

    //判斷存儲空間是否存在
    function doesBucketExist()
    {
        try {
            $res = self::$oss->doesBucketExist("budfe1sdfd");
        } catch (OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        if ($res === true) {
            print(__FUNCTION__ . ": OK" . "\n");
        } else {
            print(__FUNCTION__ . ": FAILED" . "\n");
        }
    }
}

然後在控制器裏就可以用了,需要引入aliyunoss.php的命名空間,然後調用就可以,如圖:
這裏寫圖片描述

詳細API可以查看https://help.aliyun.com/document_detail/32099.html?spm=5176.doc32102.6.758.J6e3WE這裏

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