為什么要使用第三方存儲?
1)靜態(tài)文件會占用大量帶寬;
2)加載速度
3)存儲空間
第三方存儲有哪些?
1)阿里云oss
2)七牛云
3)又拍云
等等
阿里云OSS的介紹https://www.aliyun.com/product/oss/
阿里云oss的使用
阿里云oss使用步驟:
1.申請key和secret(把key和secret保存好,項目中配置使用);
2.新建Bucket
3.查看文檔(對象存儲oss->開發(fā)者指南->sdk參考->PHPsdk)
composer require aliyuncs/oss-sdk-php
4.推薦工具:常用工具->ossbrowser
準備工作
1.申請key和secret
打開阿里云官網(wǎng),登錄賬號之后,在控制臺左側(cè)選擇對象存儲oss,進入之后點擊右側(cè)的AccessKey如下圖
2.新建Bucket
下載sdk
composer require aliyuncs/oss-sdk-php
查看endpoint地址,在找不到情況下選擇新建-》地域便可以看到endpoint地址
阿里云oss配置參數(shù)
"OSS_ACCESS_ID"=> '',//創(chuàng)建accesskey的時候保存的
"OSS_ACCESS_KEY" => '',//創(chuàng)建accesskey的時候保存的
"OSS_ENDPOINT" => '',//后臺控制面板打開對應(yīng)的bucket查看,會顯示對應(yīng)的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、根據(jù)OssClient實例進行bucket創(chuàng)建、刪除操作等一系列操作
2、仿照Bucket.php案例實現(xiàn)
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');
}
/**
* 根據(jù)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)
{
#云上的文件默認是從云上的根路徑開始的,因此需要去除./
// 先統(tǒng)一去除左側(cè)的.或者/ 再添加./
$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 版本開始增加了擴展配置?錄的概念,在應(yīng)?配置?錄或者模塊配置?錄下?增加extra??錄,下?的配置?件都會?動加
載,?需任何配置,這極?的?便了我們進?擴展配置。
例如:我們再
?錄下?創(chuàng)建?個aliyun.php?件,內(nèi)容如下:
D:\phpstudy_pro\WWW\tp5\application\extra\aliyun.php文章來源:http://www.zghlxwxcb.cn/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是常量文章來源地址http://www.zghlxwxcb.cn/news/detail-502311.html
config('aliyun.OSS_ACCESS_ID')
到了這里,關(guān)于PHP-阿里云oss使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!