1.引用阿里云的上传sdk
require ROOT_PATH . 'addons/AliyunOss/SDK/autoload.php';
use OSS\OssClient;
2.base64转图片并上传
/**
* base64上传图片
* @author caicai
* @time 2023/4/21 11:47
*/
public function baseUpload($data){
$imgBase64 = $data['sixfour'];
#转化base64编码图片
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $imgBase64, $res)) {
//获取图片类型
$type = $res[2];
//图片名字
$fileName = md5(time()) . '.' . $type;
// 临时文件
$tmpfname = tempnam("/image/", "FOO");
//保存图片
$handle = fopen($tmpfname, "w");
//阿里云oss上传的文件目录
$dst = 'zxnew/';
if (fwrite($handle, base64_decode(str_replace($res[1], '', $imgBase64))))
{
#上传图片至阿里云OSS
$url = $this->uploadImage($dst . $fileName, $tmpfname);
#关闭缓存
fclose($handle);
#删除本地该图片
unlink($tmpfname);
#返回图片链接
$returnUrl = 'https://wurenzhishou.oss-cn-beijing.aliyuncs.com/' . $dst . $fileName;
return ApiReturn::r(1, $returnUrl, "ok");
}else {
return ApiReturn::r(0, '', "fail");
}
} else {
return ApiReturn::r(0, '', "fail");
}
}
function uploadImage($dst, $getFile)
{
$configs = addons_config('AliyunOss');
#配置OSS基本配置
$config = array(
'KeyId' => $configs['ak'],
'KeySecret' => $configs['sk'],
'Endpoint' => $configs['endpoint'],
'Bucket' => $configs['bucket'],
);
$ossClient = new OssClient($config['KeyId'], $config['KeySecret'],
$config['Endpoint']);
#执行阿里云上传
$result = $ossClient->uploadFile($config['Bucket'], $dst, $getFile);
#返回
return $result;
}