云存储
1、阿里云oss
https://packagist.org/packages/aliyuncs/oss-sdk-php
安装sdk
composer require aliyuncs/oss-sdk-php
第一步找到config的app这里主要就是配置一下常用信息。 比如
在你的配置文件里面配置一些基础信息 如下
'aliyun_oss' => [
'KeyId' => 'anhongliang', //您的Access Key ID
'KeySecret' => 'anhongliang', //您的Access Key Secret
'Endpoint' => '', //阿里云oss 外网地址endpoint
'Bucket' => '', //Bucket名称
],
第二步编写主要代码
因为上传功能都是常用的。建议可以放在base下面或者写一个公共方法 。
/**
* 实例化阿里云OSS
* @return object 实例化得到的对象
* @return 此步作为共用对象,可提供给多个模块统一调用
*/
function newOss(){
//获取配置项,并赋值给对象$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->newOss();
//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();
//参数1 :Bucket 名称 ,2.文件名 ,3.文件相对硬盘的路径
$this->uploadFile('gtjj', $fileName, $info->getPathname());
return $path;
} else {
// 上传失败获取错误信息
echo $file->getError();
}
return json($file);
}
阿里云控制台可以看到文件