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\n"); printf($e->getMessage() . "\n"); return; } }

     

  • 附上base64的原理講解:https://blog.csdn.net/wo541075754/article/details/81734770


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM