为什么要使用第三方存储?
1)静态文件会占用大量带宽;
2)加载速度
3)存储空间
第三方存储有哪些?
1)阿里云oss
2)七牛云
3)又拍云
等等
阿里云OSS的介绍https://www.aliyun.com/product/oss/
阿里云oss的使用
阿里云oss使用步骤:
1.申请key和secret(把key和secret保存好,项目中配置使用);
2.新建Bucket
3.查看文档(对象存储oss->开发者指南->sdk参考->PHPsdk)
composer require aliyuncs/oss-sdk-php
4.推荐工具:常用工具->ossbrowser
准备工作
1.申请key和secret
打开阿里云官网,登录账号之后,在控制台左侧选择对象存储oss,进入之后点击右侧的AccessKey如下图
2.新建Bucket
下载sdk
composer require aliyuncs/oss-sdk-php
查看endpoint地址,在找不到情况下选择新建-》地域便可以看到endpoint地址
阿里云oss配置参数
"OSS_ACCESS_ID"=>'',//创建accesskey的时候保存的"OSS_ACCESS_KEY"=>'',//创建accesskey的时候保存的"OSS_ENDPOINT"=>'',//后台控制面板打开对应的bucket查看,会显示对应的endpoint地址"OSS_TEST_BUCKET"=>''//bucket名称
Thinkphp5框架中使用oss
先将文件保存在本地
后将文件上传至oss
1、下载sdk后先看案例
案例Bucket.php
1、引入require_once__DIR__.'/Common.php';2、生成实例Common.php
读取密钥配置
constendpoint=Config::OSS_ENDPOINT;constaccessKeyId=Config::OSS_ACCESS_ID;constaccessKeySecret=Config::OSS_ACCESS_KEY;constbucket=Config::OSS_TEST_BUCKET;
实例oss客户端
newOssClient3、根据OssClient实例进行bucket创建、删除操作等一系列操作
2、仿照Bucket.php案例实现
D:\phpstudy_pro\WWW\tp5\extend\Aliyun\Oss.php
<?phpnamespaceAliyun;useOSS\OssClient;useOSS\Core\OssException;/**
* Class Common
*
* 示例程序【Samples/*.php】 的Common类,用于获取OssClient实例和其他公用方法
*/classOss{public$client;private$bucket;publicfunction__construct(){$this->getOssClient();$this->bucket=config('aliyun.OSS_TEST_BUCKET');}/**
* 根据Config配置,得到一个OssClient实例
*
* @return OssClient 一个OssClient实例
*/publicfunctiongetOssClient(){try{if(!isset($this->client)){$this->client=$ossClient=newOssClient(config('aliyun.OSS_ACCESS_ID'),config('aliyun.OSS_ACCESS_KEY'),config('aliyun.OSS_ENDPOINT'),false);}}catch(OssException$e){printf(__FUNCTION__."creating OssClient instance: FAILED\n");printf($e->getMessage()."\n");}}/**
* 上传文件到oss并删除本地文件
* @param string $path 文件路径
* @return bollear 是否上传
*/publicfunctionupload($path){#云上的文件默认是从云上的根路径开始的,因此需要去除./// 先统一去除左侧的.或者/ 再添加./$oss_path=ltrim($path,'./');$path='./'.$oss_path;if(file_exists($path)){// 上传到oss$this->client->uploadFile($this->bucket,$oss_path,$path);// 如需上传到oss后 自动删除本地的文件 则删除下面的注释// unlink($path);returntrue;}returnfalse;}/**
* 删除oss上指定文件
* @param string $object 文件路径 例如删除 /Public/README.md文件 传Public/README.md 即可
*/publicfunctiondelete_object($object){#云上的文件默认是从云上的根路径开始的,因此需要去除./$object=ltrim($object,'./');$res=$this->client->deleteObject($this->bucket,$object);return$res;}}
密钥配置
D:\phpstudy_pro\WWW\tp5\application\extra\aliyun.php
<?phpreturn["OSS_ACCESS_ID"=>'xxxx',"OSS_ACCESS_KEY"=>'xxxxx',"OSS_ENDPOINT"=>'oss-cn-shenzhen.aliyuncs.com',"OSS_TEST_BUCKET"=>'liuyuanshan'];
3、使用
useAliyun\Oss;classIndexextendsController{publicfunctionoss(){$oss=newOss();$oss->upload('./test/test.xlsx');//$res = $oss->delete_object('test/test.xlsx');}}
知识拓展
tp5的application/extra扩展配置的详细使⽤⽅式
ThinkPHP5 版本开始增加了扩展配置⽬录的概念,在应⽤配置⽬录或者模块配置⽬录下⾯增加extra⼦⽬录,下⾯的配置⽂件都会⾃动加
载,⽆需任何配置,这极⼤的⽅便了我们进⾏扩展配置。
例如:我们再
⽬录下⾯创建⼀个aliyun.php⽂件,内容如下:
D:\phpstudy_pro\WWW\tp5\application\extra\aliyun.php
<?phpreturn["OSS_ACCESS_ID"=>'xxxx',"OSS_ACCESS_KEY"=>'xxxxxx',"OSS_ENDPOINT"=>'doneke.oss-cn-shenzhen.aliyuncs.com',"OSS_TEST_BUCKET"=>'doneke'];
获取扩展配置信息aliyun是读取aliyun.php文件OSS_ACCESS_ID是常量
config('aliyun.OSS_ACCESS_ID')
版权归原作者 刘远山 所有, 如有侵权,请联系我们删除。