YII2.0 接入阿里云的OSS对象存储

来源:互联网 发布:知乎有趣的话题 编辑:程序博客网 时间:2024/05/29 15:54

找了半天资料,终于是搞定了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文件里写如下代码:

<?phpnamespace 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这里

原创粉丝点击