第一步,先用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);
}
待完善,有问题请留言
未经允许不得转载:任鹏个人博客 » Thinkphp5.1整合阿里云OSS开放存储云服务
最新评论
Forex wiki. https://lt.forex-stock-bitcoin-brokers.com
Magnificent items from you, man. I have take note your stuff
Following on from the 3rd March Meetings held by economic de
It is remarkable, rather valuable message dfgdlfg2131.32
一般都会有一个沙盒期的,过了沙盒期就会慢慢放出来
百度不收录是应为是新站的原因吗?
The spike in consumer prices that left inflation at a four-d