Laravel 图片上传

这篇博客详细介绍了在 Laravel 中如何处理多图上传,包括检查文件有效性、使用自定义函数 img_uplode 存储原图和生成缩略图,并提供了文件路径的处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//获取文件上传信息
                        $file_upload = $request->file('image');
                        
                        if ($file_upload) {
                            if(is_array($file_upload)){
                                foreach ($file_upload as $value){
                                    if (!$value->isValid()) {
                                        return ['上传图片出错,请重试!'];
                                    }
                                    $img_res[] = img_uplode($value, 'questionPic');
                                }
                                
                                foreach ($img_res as $value) {
                                    $img_path[] = $value['path'];
                                    $img_thumb_path[] = $value['thumb_path'];
                                }
                                
                                $path = implode('|', $img_path);
                                $thumb_path = implode('|', $img_thumb_path);
                            } else {
                                $img_res = img_uplode($file_upload, 'questionPic');
                                if (!empty($img_res)) {
                                    $path = $img_res['path'];
                                    $thumb_path = $img_res['thumb_path'];
                                }
                            }
                        }

 

if (!function_exists('img_uplode')) {
        function img_uplode($img, $dir)
        {
            //获取文件上传的扩展名
            $extension = $img->extension();
            // echo $extension;exit;
            //图片前缀地址
            $prefix = date('YmdHis').rand(1000,9999);
            //重新拼接缩略图片名称
            $pic_thumb_name = $prefix.'_thumb.'.$extension;
            //重新拼接原图片名称
            $pic_name = $prefix.'.'.$extension;
            $img->storeAs('public/'.$dir, $pic_name);

            //原图片保存路劲
            $save_path = storage_path('app/public/'.$dir.'/'.$pic_name);
            
            //缩略图保存路径
            $thumb_save_path = storage_path('app/public/'.$dir.'/'.$pic_thumb_name);
            //判断原图片是否存在
            if(file_exists($save_path)){
                    //获取此张上传的图片信息
                    $img_arr = getimagesize($save_path);
                    if($img_arr[0]>$img_arr[1]){
                            //调用缩略图函数、、这里可以设置缩略的宽和高//宽为300,高自适应
                            mkThumbnail( $save_path, 300, null, $thumb_save_path);
                    }else{
                            //调用缩略图函数、、这里可以设置缩略的宽和高//宽为200,高自适应
                            mkThumbnail( $save_path, null, 300, $thumb_save_path);
                    }
            }
            
            $data = array(
                'path' => $pic_name,
                'thumb_path' => $pic_thumb_name
            );
            return $data;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值