• 【PHP】 php 解析 base64图片上传


    base64 图片编码格式: 类似如下

    data:image/JPG;base64,/9j/4S/+RXhpZgAATU0AKgAAAAgACwEPAAIAAAAG

    php 解析代码如下:  基于tp3.2得

    public function file_upload(){$base64_str = "";  //base64 图片流
            $result_base64 = $this->get_bass64_array($base64_str);
    
            $file_name_base64 = $result_base64['file_name'];
            $file_type = $result_base64['flie_type'];
            $upload_img = base64_decode($file_name_base64); 
    
            $img_file_name = 'large/';
            $img_name = uniqid().".".$file_type;
            $upload_path = C('upload_path'); // 设置附件上传根目录
            $rootPath = C('upload_img_url'). rtrim($upload_path, '/'); //设置上传全路径
            $file_path = $rootPath."/".$img_file_name.$img_name;
            $upload_result = file_put_contents($file_path, $upload_img);//保存图片,返回的是字节数 
    
            if(empty($upload_result) || $upload_result =='0'){
                unlink($upload_result);
                E("文件上传失败",'102');
            }
            $img_info_size = ceil(filesize($file_path)); //单位:B
            $maxSize = 5*1024*1024; // 设置附件上传大小 5M
            if($img_info_size > $maxSize){
                unlink($upload_result);
                E("文件大小超出限制:5M",'103');
            }
    
            $returnPath= $upload_path.$img_file_name.$img_name;
            $preview=C('img_base').$returnPath;
    
            $return_data = array(
                "returnPath"=>$returnPath,
                "preview"=>$preview  //预览使用
            );
            return $return_data;
        }
    
        //处理base64: 
        private function get_bass64_array($data_str){
            if(empty($data_str)){
                return '';
            }
            $base_array= explode(',', $data_str);
            $base_file = $base_array[1];
            $base_file_type=$this->get_between($base_array[0], "/", ";");
            $return_data = array(
                "flie_type"=>$base_file_type,
                'file_name'=>$base_file  
            );
            return $return_data;
        }
    
        /*
         * php截取指定两个字符之间字符串
         * */
        private function get_between($input, $start, $end) {
            $substr = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1));
            return $substr;
        }

    核心代码如上,可根据自己业务或者框架代码 稍作修改,即可使用

  • 相关阅读:
    【转】centos7升级git版本
    小程序购物车抛物线动画(通用)
    IDEA高级操作
    JAVA获取各种路径
    这些SpringBoot天生自带Buff工具类你都用过哪些?
    搜狗输入法简繁问题
    Java8 Stream流递归,几行代码搞定遍历树形结构
    SpringBoot 启动时实现自动执行代码的几种方式讲解
    公司用的 MySQL 团队开发规范,非常详细,建议收藏!
    Springboot整合websocket全面解析
  • 原文地址:https://www.cnblogs.com/richerdyoung/p/8526683.html
Copyright © 2020-2023  润新知