为什么要使用第三方存储?
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
读取密钥配置
const endpoint = Config::OSS_ENDPOINT;
const accessKeyId = Config::OSS_ACCESS_ID;
const accessKeySecret = Config::OSS_ACCESS_KEY;
const bucket = Config::OSS_TEST_BUCKET;
实例oss客户端
new OssClient
3、根据OssClient实例进行bucket创建、删除操作等一系列操作
2、仿照Bucket.php案例实现
D:\phpstudy_pro\WWW\tp5\extend\Aliyun\Oss.php
<?php
namespace Aliyun;
use OSS\OssClient;
use OSS\Core\OssException;
/**
* Class Common
*
* 示例程序【Samples/*.php】 的Common类,用于获取OssClient实例和其他公用方法
*/
class Oss
{
public $client;
private $bucket;
public function __construct()
{
$this->getOssClient();
$this->bucket = config('aliyun.OSS_TEST_BUCKET');
}
/**
* 根据Config配置,得到一个OssClient实例
*
* @return OssClient 一个OssClient实例
*/
public function getOssClient()
{
try {
if (!isset($this->client)) {
$this->client = $ossClient = new OssClient(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 是否上传
*/
public function upload($path)
{
#云上的文件默认是从云上的根路径开始的,因此需要去除./
// 先统一去除左侧的.或者/ 再添加./
$oss_path = ltrim($path, './');
$path = './' . $oss_path;
if (file_exists($path)) {
// 上传到oss
$this->client->uploadFile($this->bucket, $oss_path, $path);
// 如需上传到oss后 自动删除本地的文件 则删除下面的注释
// unlink($path);
return true;
}
return false;
}
/**
* 删除oss上指定文件
* @param string $object 文件路径 例如删除 /Public/README.md文件 传Public/README.md 即可
*/
public function delete_object($object)
{
#云上的文件默认是从云上的根路径开始的,因此需要去除./
$object = ltrim($object, './');
$res = $this->client->deleteObject($this->bucket, $object);
return $res;
}
}
密钥配置
D:\phpstudy_pro\WWW\tp5\application\extra\aliyun.php
<?php
return [
"OSS_ACCESS_ID"=> 'xxxx',
"OSS_ACCESS_KEY" => 'xxxxx',
"OSS_ENDPOINT" => 'oss-cn-shenzhen.aliyuncs.com',
"OSS_TEST_BUCKET" => 'liuyuanshan'
];
3、使用
use Aliyun\Oss;
class Index extends Controller
{
public function oss(){
$oss = new Oss();
$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文章来源:https://www.toymoban.com/news/detail-502311.html
<?php
return [
"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是常量文章来源地址https://www.toymoban.com/news/detail-502311.html
config('aliyun.OSS_ACCESS_ID')
到了这里,关于PHP-阿里云oss使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!