yii2.0整合阿里云oss的示例代码


Posted in PHP onSeptember 19, 2017

主要思路,首先用composer下载阿里云oss的php sdk,然后自定义一个组件,就能够在全局调用阿里云oss了。

具体步骤如下:

1 到阿里云官网找到php sdk,网址为https://help.aliyun.com/document_detail/32099.html?spm=5176.87240.400427.40.s8EbEH

2 使用composer安装,在项目目录下(basic/)输入:

composer require aliyuncs/oss-sdk-php

安装完成以后,如下图

yii2.0整合阿里云oss的示例代码

3 自定义组件:

3.1 在basic目录下,创建components文件夹,

3.2 在components目录下创建Aliyunoss.php

代码参考如下:

<?php
namespace app\components;

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

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对象
  }

  /**
   * 使用阿里云oss上传文件
   * @param $object  保存到阿里云oss的文件名
   * @param $filepath 文件在本地的绝对路径
   * @return bool   上传是否成功
   */
  public function upload($object, $filepath)
  {
    $res = false;
    $bucket = Yii::$app->params['oss']['bucket'];        //获取阿里云oss的bucket
    if (self::$oss->uploadFile($bucket, $object, $filepath)) { //调用uploadFile方法把服务器文件上传到阿里云oss
      $res = true;
    }

    return $res;
  }

  /**
   * 删除指定文件
   * @param $object 被删除的文件名
   * @return bool  删除是否成功
   */
  public function delete($object)
  {
    $res = false;
    $bucket = Yii::$app->params['oss']['bucket'];  //获取阿里云oss的bucket
    if (self::$oss->deleteObject($bucket, $object)){ //调用deleteObject方法把服务器文件上传到阿里云oss
      $res = true;
    }

    return $res;
  }

  public function test(){
    echo 123;
    echo "success";
  }
}
?>

3.3 在basic/config/params.php里边添加一个数组,用来放置阿里云oss的配置信息

代码参考如下:

'oss' =>[
    'accessKeyId'=>'您的accessKeyId',
    'accessKeySecret'=>'您的accessKeySecret',
    'bucket' => '您的bucket',
    'endPoint' => '您的endPoint',
  ]

3.4 在basic/config/main.php里边添加一个组件配置

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

3.5 在controller里边尝试调用

Yii::$app->Aliyunoss->test();

3.6 调用成功截图:

yii2.0整合阿里云oss的示例代码

至此,已经成功地把阿里云oss引入到了yii2框架之中。调用upload方法和调用delete方法跟示例相同。你也可以根据OssClient里边的方法为Aliyunoss组件增加新的功能。一般来说,使用上传和删除功能就已经能满足大部分需求了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
PHP文件系统管理(实例讲解)
Sep 19 #PHP
Laravel学习教程之View模块详解
Sep 18 #PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 #PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 #PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 #PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 #PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 #PHP
You might like
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python去掉字符串中空格的方法
2014/03/11 Python
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
python任务调度实例分析
2015/05/19 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
python远程连接MySQL数据库
2019/04/19 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
python 实现有道翻译功能
2021/02/26 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
门诊挂号室室长岗位职责
2013/11/27 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
安全责任书范本
2014/04/15 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
元旦主持词开场白
2015/05/29 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
初中地理教学反思
2016/02/19 职场文书
浅析Python中的套接字编程
2021/06/22 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
Golang 字符串的常见操作
2022/04/19 Golang
MySQL如何使备份得数据保持一致
2022/05/02 MySQL
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android