think-oss
thinkphp (>5.0) aliyun-oss 阿里云對象存儲 騰訊云對象存儲
安裝
composer require chichoyi/think-oss
配置
配置方式一:手動復制 vendor/chichoyi/think-oss/src/oss.php 到 application/extra/
配置方式二: 在 application/extra/ 目錄下創(chuàng)建文件 oss.php , 然后復制下一步的配置參數(shù)到該文件
配置參數(shù)
return [
//支持驅(qū)動:阿里云(oss), 騰訊云(cos)
'driver' => 'oss',
//驅(qū)動連接參數(shù)
'connection' => [
//阿里云-oss
'oss' => [
'access_id' => '',
'access_secret' => '',
'endpoint' => '',
],
//騰訊云-cos
'cos' => [
'access_id' => '',
'access_secret' => '',
'region' => '',
],
],
//文件目錄
'directory' => [
'DEFAULT' => [ 'dir' => 'default/', 'type' => 'default'],
'PRIVATE' => [ 'dir' => 'private/default/', 'type' => 'private_default'],
//...
],
//生產(chǎn)桶
'buckets' => [
'default' => 'your bucket',
'private_bucket' => 'your private bucket',
//...
],
//自動切換測試桶的標志, 0 生產(chǎn)環(huán)境 1 測試環(huán)境
'test_sign' => 0,
//測試桶
'buckets_for_test' => [
'default' => 'your bucket',
'private_bucket' => 'your private bucket',
//...
],
//默認false摆昧;若為true撩满,使用upload方法,將保存一份到oss绅你,同時保存到本地
'is_save_to_local' => 'false',
];
配置說明
文件目錄配置和生產(chǎn)桶或測試桶的關系是:文件目錄子項的type參數(shù)就是生產(chǎn)桶或測試桶的索引(對應關系),
使用者可以根據(jù)規(guī)則靈活配置伺帘,文件目錄的type 默認是default類型,如果有(private_)前綴的話將會自動識
別該桶是私有桶(屬性為私有)忌锯,即訪問該圖片需要授權簽名曼追,上傳圖片將會自動返回可訪問的路徑;
公共桶(屬性為公共讀)不需添加此前綴
使用
namespace app\index\controller;
use Chichoyi\ThinkOss\Facade\Oss;
use \think\Controller;
class Index extend Controller
{
//上傳圖片
$oss = Oss::upload('img');
//第二個參數(shù)不傳將自動使用default/文件夾
//單圖片上傳返回格式如下
//['path' => '', 'visit_path' => '']
//多圖片上傳返回格式如下
//[
// ['path' => '', 'visit_path' => '', 'faild_reason' => '', 'type' => 'success'],
// ['path' => '', 'visit_path' => '', 'faild_reason' => '', 'type' => 'error'],
//]
}
文檔
1. 上傳圖片
upload($input_name, $dir = 'DEFAULT', $rule = ['ext' => ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf']]) //$input_name 表單的name,比如前端上傳圖片是 <input type='file' name='img'> 那么填的就是img了
$dir 目錄名稱 對應的是application/extra/oss.php的directory的選項, 默認是DEFAUL
$rule 驗證規(guī)則 默認驗證后綴'gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'
[
'ext' => [], //檢查文件后綴
'size' => '', //檢查文件大小
'type' => ''//檢查文件 Mime 類型
]
單圖片上傳返回格式如下
['path' => '', 'visit_path' => '']
多圖片上傳返回格式如下
[
['path' => '', 'visit_path' => '', 'faild_reason' => '', 'type' => 'success'],
['path' => '', 'visit_path' => '', 'faild_reason' => '', 'type' => 'error'],
]
2. 刪除圖片
delete($path)
$path 圖片路徑(相對路徑或全路徑汉规,注:相對路徑字符串第一個字符不能加斜桿/)
返回格式如下
['code' => 20000, 'msg' => '操作成功', 'data' => '']
3. 獲取圖片訪問路徑
getImgPath($path, $timeout = 3600)
$path 圖片相對路徑
$timeout 圖片訪問過期時間礼殊,默認3600s
返回格式如下
傳空path將返回:‘圖片路徑不能為空’
正常返回是:'https://'開頭的全路徑
注意:不支持自定義域名的路徑驹吮,需要cdn加速的自己重新獲取圖片訪問路徑方法
4. 將絕對路徑轉成相對路徑
handleUrl($url)
$url 圖片絕對路徑
返回格式如下
相對路徑
5. 底層調(diào)用
baseCall($method, $arguments, $is_ret_original = false)
$method 方法名 支持aliyun-oss-sdk包OssClient類的所有方法調(diào)用,使用者可根據(jù)需求自行調(diào)用sdk包的其他方法
$arguments 參數(shù)晶伦,需要傳數(shù)組格式
$is_ret_original 是否返回源響應碟狞,調(diào)用成功默認返回true
作者言
由于thinkphp官方不支持第三方對象存儲,所以才有了這個拓展包出現(xiàn)婚陪。
此版支持阿里云的對象存儲和騰訊云對象存儲族沃,未來可能會支持七牛云,看反應吧泌参。
桶需要全部在同一個地區(qū)脆淹,不支持多個地區(qū)。
若發(fā)現(xiàn)bug沽一,還請多多指正盖溺,可以將Bug反饋到作者郵箱(chichoyi@163.com)。