laravel框架上传base64编码图片到多级文件夹下

这篇博客介绍了如何在laravel应用中处理Base64编码的图片,将其上传到根据uid生成的多级文件夹下。通过uid生成一级、二级和三级目录,创建缺失的目录并存储图片。最后,将处理后的图片路径返回。
<?php
public function uploadImg($params){
    $params['uid']  = '123456';
    $file = $params['file'];
    $uid = abs(intval($params['uid']));//1234567
    $uid = sprintf("%09d", $uid);
    $dir1 = substr($uid, 0, 3);//一级目录
    $dir2 = substr($uid, 3, 2);//二级目录
    $dir3 = substr($uid, 5, 2);//三级目录

    $path = 'upload/newheadimg/';
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){
        $type = $result[2];
        $new_file = $dir1.'/'.$dir2.'/'.$dir3.'/';
        $array_dir=explode("/",$new_file);//把多级目录分别放到数组中
        for($i=0;$i<count($array_dir);$i++) {
            $path .= $array_dir[$i] . "/";
            if (!file_exists($path)) {
                mkdir($path, 0700);
            }
        }
        $new_file = $path.substr($uid, -2).'_avatar_small'.".{$type}";
        if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))){
            /*这里是数据库操作*/
            return $new_file;
        }else{
            return false;
        }
    }else{
        return false;
}}
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值