博主最近在开发一个项目,要用到base64图片上传至阿里云OSS,所以博主将这个过程分享给大家。
我们首先先把base64图片保存在本地,然后再上传至阿里云OSS,代码如下:
//$imgBase64 图片base64格式
function imageDoAliyunOss($imgBase64)
{
#引用阿里云上传文件
require 'AliYunUpload.php';
#转化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
$aliyun = new AliYunUpload();
$url = $aliyun->uploadImage($dst . $fileName, $tmpfname);
#关闭缓存
fclose($handle);
#删除本地该图片
unlink($tmpfname);
#返回图片链接
$returnUrl = '文件域名' . $dst . $fileName;
return $returnUrl;
}else {
return '';
}
} else {
return '';
}
}
下面我们再来封装阿里云OSS上传的方法,代码如下:
function uploadImage($dst, $getFile)
{
#配置OSS基本配置
$config = array(
'KeyId' => 你的KeyId,
'KeySecret' => 你的KeySecret,
'Endpoint' => 你的Endpoint,
'Bucket' => 你的Bucket,
);
$ossClient = new OssClient($config['KeyId'], $config['KeySecret'],
$config['Endpoint']);
#执行阿里云上传
$result = $ossClient->uploadFile($config['Bucket'], $dst, $getFile);
#返回
return $result;
}
这样我们便成功完成了base64格式图片上传至阿里云OSS。
更多文章请关注微信公众号