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']);
}
}