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这里
阅读全文
0 0
- YII2.0 接入阿里云的OSS对象存储
- 阿里云的OSS对象存储 java
- 阿里云OSS对象存储
- java操作阿里云的对象存储OSS
- java操作阿里云的对象存储OSS
- 对阿里云OSS对象存储的评价
- delphi调用阿里云的对象存储服务OSS
- 阿里云OSS(对象存储)的个人见解及使用方法
- 阿里OSS对象存储的简单使用
- 阿里云OSS(对象存储服务)
- 阿里云oss对象存储图片上传
- Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片
- 第八弹——阿里云对象云存储OSS
- ossUploader 阿里云OSS 对象云存储 上传控件
- 阿里云OSS对象存储服务购买与基础使用指南
- 阿里云 OSS 对象存储,测试访问策略
- OSS阿里云对象存储服务,java文件操作
- Java使用阿里云OSS对象存储上传图片
- 大数据正式27
- leetcode 第5题 Longest Palindromic Substring
- Java调用C语言编写的简单函数库
- Android学习笔记-数据库开发-4:SQLiteDataBase基本用法(1):获取一个SQLiteDataBase
- Python.CVXPY学习指南一
- YII2.0 接入阿里云的OSS对象存储
- UVA839
- 一致性哈希算法
- java多线程(2) 循环调用三个线程
- OBD-II接口定义
- 如何解决JWplayer下报Error loading media: File could not be played错误
- Hadoop SequenceFile 详解
- Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)
- 同余定理 + 快速幂