Laravel5多图上传和Laravel5单图上传的功能实现
Laravel5文件上传默认只能上传一张图片,但是有的时候我们需要一次性上传多图就不行了,我在网上看了很多关于laravel5图片上传的文章,很多都只是介绍laravel5单图上传,多图片上传介绍少之有少,今天分享一篇关于laravrl5多图上传文章,代码逻辑设计可能不完美,但功能实现了。希望对大家有所帮助!
前端代码:
注意:
上传图片 Change 删除
上传图片 Change 删除
Laravel5单图上传:
public function upload(Request $request) { //判断请求中是否包含name=img的上传文件 if (!$request->hasFile('img')) { exit("请选择上传图片, 返回上一页!"); } // 判断图片上传中是否出错 $file = $request->file('img'); if (!$file->isValid()) { exit("上传图片出错,请重试,返回上一页!"); } //$img_path = $file -> getRealPath(); // 获取临时图片绝对路径 $entension = $file -> getClientOriginalExtension(); // 上传文件后缀 $filename = date('YmdHis').mt_rand(100,999).'.'.$entension; // 重命名图片 $date = date('Y-m-d'); $path = $file->move(public_path().'/uploads/'.$date.'/',$filename); // 重命名保存 $img_path = 'uploads/'.$date.'/'.$filename; return $img_path; }
Laravel5多图上传:
其实多图片上传就是多了一个foreach循环
public function upload(Request $request){ $file = $request->file('img'); $filePath =[]; // 定义空数组用来存放图片路径 foreach ($file as $key => $value) { // 判断图片上传中是否出错 if (!$value->isValid()) { exit("上传图片出错,请重试!"); } if(!empty($value)){//此处防止没有多文件上传的情况 $allowed_extensions = ["png", "jpg", "gif"]; if ($value->getClientOriginalExtension() && !in_array($value->getClientOriginalExtension(), $allowed_extensions)) { exit('您只能上传PNG、JPG或GIF格式的图片!'); } $destinationPath = '/uploads/'.date('Y-m-d'); // public文件夹下面uploads/xxxx-xx-xx 建文件夹 $extension = $value->getClientOriginalExtension(); // 上传文件后缀 $fileName = date('YmdHis').mt_rand(100,999).'.'.$extension; // 重命名 $value->move(public_path().$destinationPath, $fileName); // 保存图片 $filePath[] = $destinationPath.'/'.$fileName; } } // 返回上传图片路径,用于保存到数据库中 return $filePath; }