zoukankan      html  css  js  c++  java
  • PHP处理base64编码字符串

    • 接收前端传过来的base64编码后的字符串, 如果是json字符串, 那么PHP使用file_get_contents('php://input'); 来接收. 本次这里是以post传参的形式传base64字符串.
      $photo = Yii::$app->request->post('photo', '');    //yii接收,photo变量存储的即base64字符串
    • 设置base64转成图片后要保存的文件名 以及 路径
      $filename = date('YmdHis').rand(1111,9999).'.png';
      $path = Yii::$app->basePath.'/web/temp';
      if(!is_dir($path)){
      mkdir($path, 0777, 'true');
      }
      $imagePath = $path.'/'.$filename;  //文件的完整路径(本地的)
    • 判断是否有逗号, 如果有就截取后半部分
      if(strstr($photo, ',')){
          $photo = explode(',', $photo);
          $photo = $photo[1];
      }
    • base64生成图片
      $r = file_put_contents($imagePath, base64_decode($photo));   //$r接收的是返回的字节数, 至此本地成功生成图片
    • 接下来是将本地图片保存至oss上, 并删除本地图片
      $photo_url = $this->uploadImg($imagePath);  //调用上传oss方法
      //删掉本地图片
      unlink($imagePath);

      上传oss方法如下(需要下载ossSDK并引入,此处省略)

      public $access_key = '你的access_key';
      public $secret_key = '你的secret_key';
      public $domain = 'http://oss-cn-shenzhen.aliyuncs.com';  //选距离最近的域名
      public $bucket = '你的bucket';
      //$localdir是图片的本地路径, 也就是$imagePath public function uploadImg($localdir='') { include Yii::$app->basePath.'extensions/aliyun-oss-php-sdk-2.2.4/autoload.php'; //将ossSDK包放在extensions目录下, 然后引入autoload.php, 还有命名空间. 即可使用. //把文件上传到oss上 try{ $object = md5(time().uniqid()).'.png'; $ossClient = new OssClient($this->access_key, $this->secret_key, $this->domain); $exist = $ossClient->doesObjectExist($this->bucket, $object); if(!$exist){ $ossClient->uploadFile($this->bucket, $object, $localdir); } $domain = explode('//', $this->domain); $url = 'http://'.$this->bucket.'.'.$domain[1].'/'.$object; //拼接访问路径 // $data = [ // 'status' => 0, // 'msg' => 'success', // 'url' => $url, // ]; return $url; } catch(OssException $e) { printf(__FUNCTION__ . ": FAILED "); printf($e->getMessage() . " "); return; } }
    • 附上base64的原理讲解:https://blog.csdn.net/wo541075754/article/details/81734770
  • 相关阅读:
    对象池使用时要注意几点
    Flash3D学习计划(一)——3D渲染的一般管线流程
    714. Best Time to Buy and Sell Stock with Transaction Fee
    712. Minimum ASCII Delete Sum for Two Strings
    647. Palindromic Substrings(马拉车算法)
    413. Arithmetic Slices
    877. Stone Game
    338. Counting Bits
    303. Range Sum Query
    198. House Robber
  • 原文地址:https://www.cnblogs.com/bneglect/p/11612830.html
Copyright © 2011-2022 走看看