base64格式图片上传至阿里云OSS

base64格式图片上传至阿里云OSS

       博主最近在开发一个项目,要用到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。

0条评论

发表评论