Base64上传图片

原理:什么是base64图片上传,不过就是在客户端把图片用base64加密变成了字符串而已;我们在服务器端只需要去除开头的标志,把剩余的进行base64解码就得到了原来的图片;保存到指定位置即可。

    /**
     * base64图片上传文件
     * @param string $base64Img base64格式的图片字符串
     *
     * @return bool|string
     */

    function base64ImgUpload($base64Img)
    {

        if (empty($base64Img)) return false;

        if (preg_match('/^(data:s*image/(w+);base64,)/', $base64Img, $result)) {

            // 获取后缀名称

            $ext = $result[2];

            // 设置保存的图片名称

            $name = md5('johnxu_' . mt_rand(1000, 9999) . time() . uniqid()) . ".{$ext}";

            // 设置图片保存位置

            $path = './uploads/' . date('Ymd') . '/' . $name;

            // 检查上传目录是否存在,不存在创建

            if (!is_dir(dirname($path))) {

                mkdirs(dirname($path));

            }

            // 去除base64头并解码

            if (file_put_contents($path, base64_decode(str_replace($result[1], '', $base64Img)))) {

                return $path;

            } else {

                return false;

            }

        } else {

            return false;

        }

    }

    /**
     * 创建目录
     * @param string $path
     * @return bool
     */

    function mkdirs($path)

    {

        if (!is_dir($path)) {

            if (!mkdirs(dirname($path))) {

                return false;

            }

            if (!mkdir($path, 0777)) {

                return false;

            }

        }

        return true;

    }

参考文章:https://www.toutiao.com/a6499781084840985101/

转载于:https://my.oschina.net/u/2494575/blog/1802585

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值