您現在的位置是:首頁 > ThinkPHP

李清波 2019-07-11 ThinkPHP 385

Thinkphp5.1整合阿里云OSS開放存儲云服務

第一步,先用composer更新阿里云oss得sdk下來

composer require aliyuncs/oss-sdk-php


第二步,添加oss得配置文件

'aliyun_oss' => [
        'KeyId'      => '',  //您的Access Key ID
        'KeySecret'  => '',  //您的Access Key Secret
        'Endpoint'   => '',  //阿里云oss 外網地址endpoint
        'Bucket'     => '',  //Bucket名稱
    ],


 第三步,就可以直接編寫主要代碼了。 因為上傳功能都是常用的。建議可以放在base下面或者寫一個公共方法 。

   /**
     * 實例化阿里云OSS
     * @return object 實例化得到的對象
     * @return 此步作為共用對象,可提供給多個模塊統一調用
     */
    function new_oss(){
        //獲取配置項,并賦值給對象$config
        $config=config('aliyun_oss');
        //實例化OSS
        $oss=new \OSS\OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);
        return $oss;
    }
 
      /**
     * 上傳指定的本地文件內容
     *
     * @param OssClient $ossClient OSSClient實例
     * @param string $bucket 存儲空間名稱
     * @param string $object 上傳的文件名稱
     * @param string $Path 本地文件路徑
     * @return null
     */
    function uploadFile($bucket,$object,$Path){
        //try 要執行的代碼,如果代碼執行過程中某一條語句發生異常,則程序直接跳轉到CATCH塊中,由$e收集錯誤信息和顯示
        try{
            //沒忘吧,new_oss()是我們上一步所寫的自定義函數
            $ossClient =$this->new_oss();
            //uploadFile的上傳方法
        $res=    $ossClient->uploadFile($bucket, $object, $Path);
            return json($res);
        } catch(OssException $e) {
            //如果出錯這里返回報錯信息
            return $e->getMessage();
        }
    }


最后一步,調用  當用到上傳文件的時候就可以調用了。我直接拿thinkphp的上傳方法過來了。調用的時候很簡單 里面傳三個參數 一個就是bucket的名稱。 我的是gtjj 有需要也可以動態配置。第二個就是文件名字。 第三個就是文件路徑

 
    public function upload()
    {
        // 獲取表單上傳文件 例如上傳了001.jpg
        $file = request()->file('file');
        // 移動到框架應用根目錄/uploads/ 目錄下
        $info = $file->move('./uploads');
        if ($info) {
             $path = $info->getSaveName();
             $filepath = 'https://qz.10huisp.com/uploads/' . $info->getSaveName();
            $fileName = 'uploads/' . $info->getSaveName();
            $this->uploadFile('gtjj', $fileName, $info->getPathname());
            return $path;
        } else {
            // 上傳失敗獲取錯誤信息
            echo $file->getError();
        }
        return json($file);
    }


待完善,有問題請留言

評論