TP5 阿里云OSS

1.通过composer安装:

  composer require aliyuncs/oss-sdk-php

2.config 配置文件

 //aliyun OSS 
    'aliyun_oss'               => [
        'KeyId'      => '******',
        'KeySecret'  => '******',
        'Endpoint'   => '******', 
        'Bucket'     => '******',  //Bucket名称
        'Ali_OSS_url'=>'******',
        'Ali_OSS_seconduel'=>'*******',//阿里云二级域名
    ],
3.model
  
      
<?php

namespace app\admin\model;

use OSS\OssClient;
use OSS\Core\OssException;

class Oss extends BaseModel
{
    /**
     * 实例化阿里云OSS
     * @return object 实例化得到的对象
     * @return 此步作为共用对象,可提供给多个模块统一调用
     */
   public function new_oss(){
        //获取配置项,并赋值给对象$config
        $config=config('aliyun_oss');
        //实例化OSS
        $oss=new \OSS\OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);
        return $oss;
    }
    /**
     * 上传指定的本地文件内容
     *
     * @author harry
     * @param OssClient $ossClient OSSClient实例
     * @param string $bucket 存储空间名称
     * @param string $object 上传的文件名称
     * @param string $Path 本地文件路径
     * @return img
     */
    public function uploadFile($object,$Path){
        //try 要执行的代码,如果代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示
        try{
            $config=config('aliyun_oss');
            $bucket=$config['Bucket'];
            $ossClient = $this->new_oss();
            //uploadFile的上传方法
            $result = $ossClient->uploadFile($bucket, $object, $Path);
            if(!empty($result['oss-request-url'])){
                $img=str_replace($config['Ali_OSS_url'], $config['Ali_OSS_seconduel'],$result['oss-request-url']);
            }    
        } catch(OssException $e) {
            //如果出错这里返回报错信息
            return $e->getMessage();
        }
        //否则,完成上传操作
        return $img;
    }

}
4.控制器中引用
  
 $isOss='2';
        if($this->request->isAjax()){
            $file = parent::upload('img');
            if($file['flag']){
                $air="uploads/".str_replace("\\", '/',$file['info']->getSaveName());
                $files=str_replace("\\", '/',$file['info']->getpathName());
                if($isOss=='1'){
                  $oss_img = $this->oss->uploadFile($air,$files);
                }
                $img=$oss_img?:$file['info']->getSaveName();
                return ajax_return_adv($img);
            }else{
                return ajax_return_adv_error($file['info']);
            }
        }

 

posted @ 2020-06-19 15:03  一个退伍PHPsir  阅读(144)  评论(0编辑  收藏  举报