PHP上传方式base64图片的接收方式

preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_img, $result)

匹配结果的第二个是图片的格式

file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)));

把匹配结果的第一部分干掉然后进行base64解码就可以了!

if (!empty($base64_img) && preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_img, $result)) {
            // 图片格式校验
            switch ($result[2]) {
                case 'jpeg' :
                case 'pjpeg' :
                    $ext = 'jpg';
                    break;
                case 'x-png' :
                    $ext = 'png';
                    break;
                default :
                    $ext = $result[2];
                    break;
            }
            if (!in_array($ext, ['jpg', 'bmp', 'png'])) {
                throw new \Exception('图片格式错误');
            }

            // 文件目录
            $file_path = App::getRootPath() . 'public/upload/license/' . date('Ymd') . '/';
            if (!is_dir($file_path)) {
                mkdir($file_path,0777, true);
            }

            // 新文件
            $new_name = time() . mt_rand(10000, 99999) . '.' . $ext;
            $new_file = $file_path . $new_name;

            file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)));

            //上传至OSS
            $upload_res = $this->oss_client->uploadFile($this->bucket, $new_name, $new_file);
            if (!$upload_res) {
                throw new \Exception('图片上传失败');
            }

            // 上传成功后,删除本地文件
            @unlink($new_file);

            return $upload_res['info']['url'];

        } else {
            //文件错误
            throw new \Exception('文件格式错误');
        }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值