thinkphp5 阿里云、騰訊云對象存儲

think-oss

thinkphp (>5.0) aliyun-oss 阿里云對象存儲 騰訊云對象存儲

安裝

composer require chichoyi/think-oss

配置

配置方式一:手動復(fù)制 vendor/chichoyi/think-oss/src/oss.php 到 application/extra/

配置方式二: 在 application/extra/ 目錄下創(chuàng)建文件 oss.php , 然后復(fù)制下一步的配置參數(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',
        //...
    ],

    //自動切換測試桶的標(biāo)志, 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)桶或測試桶的關(guān)系是:文件目錄子項的type參數(shù)就是生產(chǎn)桶或測試桶的索引(對應(yīng)關(guān)系),
使用者可以根據(jù)規(guī)則靈活配置,文件目錄的type 默認是default類型,如果有(private_)前綴的話將會自動識
別該桶是私有桶(屬性為私有),即訪問該圖片需要授權(quán)簽名,上傳圖片將會自動返回可訪問的路徑;
公共桶(屬性為公共讀)不需添加此前綴

使用

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 目錄名稱 對應(yīng)的是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. 將絕對路徑轉(zhuǎn)成相對路徑

  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 是否返回源響應(yīng),調(diào)用成功默認返回true

作者言

由于thinkphp官方不支持第三方對象存儲,所以才有了這個拓展包出現(xiàn)。

此版支持阿里云的對象存儲和騰訊云對象存儲,未來可能會支持七牛云,看反應(yīng)吧。

桶需要全部在同一個地區(qū),不支持多個地區(qū)。

若發(fā)現(xiàn)bug,還請多多指正,可以將Bug反饋到作者郵箱(chichoyi@163.com)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容