【分享】ThinkPHP5整合阿里云oss
浏览:11716 发布日期:2016/12/24 分类:ThinkPHP5专区 关键字: thinkphp5 OSS 整合
社区推荐: 阿里云3月采购季活动已开启,爆款云服务器低至5折,推荐新人购买即可获得25%返现。
水冷眸目前手中的一个项目,用得Thinkphp5.0.4制作的,基于访问速度、容灾备份,以及受攻击迅速切换等各方面考虑,程序源代码跟项目中所使用的静态文件、媒体文件都将分开存放。
现如今是一个“云”时代,在初期,乃至后期,我们都不需要专门去为这些分类去购买更多的服务器,而是直接使用云服务商所提供的各类增值功能就能很好的完成这一步。
本项目这次选用的是阿里云的OSS,通过官方给出的开发文档,以及Thinkphp5框架良好的类库扩展功能,将OSS整合进项目当中。
当然,类似阿里云OSS的提供商有很多,但是我们不是来讨论孰优孰劣,而是直接上干货的。
一:准备工作
1:申请Access Key ID和Access Key Secret,以及创建好你的Bucket;
(创建Bucket也可以通过开发文档给出的接口,在自己的项目中操作,但是水冷眸的项目中目前不需要这个功能,因此就跳过了。)
2:根据服务器的位置获取外网endpoint;https://help.aliyun.com/document_detail/31837.html
二:安装阿里云OSS的SDK;
关于安装OSS的PHP-SDK的方法,官方给出了三种方式,因为本身Thinkphp5版本,官方也是极度推荐通过composer方式来管理我们的项目依赖,所以水冷眸也是在上手了Thinkphp5之后,小小的百度一下composer到底是个什么东西,但是这不是这篇文章的重点,因此跳过,只说水冷眸的操作过程,有兴趣的朋友可以自行百度composer。
在项目的根目录下,按住shift键并右键打开菜单,选择在此处打开命令行。
然后复制阿里云官方给出的命令行,在命令行窗口点击右键进行粘贴,并回车执行。(略慢,有条件的朋友上梯子,没有的朋友,也请耐心等待。)
composer require aliyuncs/oss-sdk-php
最后出现如下图标识,即为安装成功。
同时,你的项目下的vendor文件夹内,也将出现一个aliyuncs的文件夹,里面的文件就是OSS库文件,以及演示文件,具体的目录说明,看这里https://help.aliyun.com/document_detail/32099.html,官方给出具体说明的东西,水冷眸就不再赘述了。
三:填写配置项
配置项写在哪里这个各人有各人的喜好,在本文中,水冷眸则是放进应用公共配置文件中,也就是应用目录下的config.php里面。
//阿里云OSS配置
'aliyun_oss' => [
'KeyId' => '', //您的Access Key ID
'KeySecret' => '', //您的Access Key Secret
'Endpoint' => '', //阿里云oss 外网地址endpoint
'Bucket' => '', //Bucket名称
],
复制代码
四:实例化并上传
1:实例化
/**
* 实例化阿里云OSS
* @return object 实例化得到的对象
* @return 此步作为共用对象,可提供给多个模块统一调用
*/
function new_oss(){
//获取配置项,并赋值给对象$config
$config=config('aliyun_oss');
//实例化OSS
$oss=new \OSS\OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);
return $oss;
}
复制代码
2:根据官方演示代码,制作上传模块
/**
* 上传指定的本地文件内容
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @param string $object 上传的文件名称
* @param string $Path 本地文件路径
* @return null
*/
function uploadFile($bucket,$object,$Path){
//try 要执行的代码,如果代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示
try{
//没忘吧,new_oss()是我们上一步所写的自定义函数
$ossClient = new_oss();
//uploadFile的上传方法
$ossClient->uploadFile($bucket, $object, $Path);
} catch(OssException $e) {
//如果出错这里返回报错信息
return $e->getMessage();
}
//否则,完成上传操作
return true;
}
复制代码
上面两段代码,均是放在公共模块函数文件里面,在有需要的地方,直接调用uploadFile即可
代码挺简单,仔细看代码的注释,想来你看到本篇教程,又看到最后的,有了注释,要集成也不是什么难事吧。
教程粗糙,各位海涵。目前来说,上面的代码在水冷眸自己的项目中已经测试通过,水冷眸本身也是一个小白自学,如有问题,欢迎评论拍砖指正。
PS:补充,别忘了在公共模块函数文件头部加上
use OSS\OssClient;
use OSS\Core\OssException;