laravel5.2图片的上传

实现图片的上传分为两个部分,第一个部分判断图片是否上传,设置图片的名字,路径,代码如下:

 // 插入图片请求,判断上传的文件是否合法,设置图片的路径,图片的名字
    public function insert(Request $request)
    {
        // 判断文件是否存在,存在继续操作
        if ($request->hasFile('photo'))
        {
            $file = $request->file('photo');
            // 判断当前文件是否是图片,是否合法,不是显示错误信息,回到上一个页面
            $extname = ['gif','jpg','png','bmp'];
            if (!in_array($file->getClientOriginalExtension(),$extname) || $file->getClientSize() > $file->getMaxFilesize()){
                return back()->withErrors('图片信息不合法');
            }
            // 设定图片的名字
            $name = time().'.'.$file->getClientOriginalExtension();
            // 设定图片的路径
            $date = date('Ymd');
            // 注意这里不能添加'/'在upload之前
            $path = 'uploads/'.$date;
            // 执行图片的更新操作
            if ($this->uploadImage($file, $name, $path)) {
                return redirect('/request/upload');
            } else {
                return back()->withErrors('更新图片信息失败');
            }
        } else
        {
            // 回到原来页面并显示错误信息
            return back()->withErrors('未上传图片信息');
        }
    }

2. 删除之前的图片,移动图片到指定目录,设置该图片的权限,更新表中数据。

// 上传图片操作
    public function uploadImage($file, $name, $destination)
    {
        // 判断是否存在上次的图片,如果存在,删除上次的图片
        $image = DB::table('images')->where('id', 1)->value('path');
        unlink($image);
        if ($file->move($destination, $name))
        {
            chmod($destination, 0777);
            // 更新图片的内容入库,并且更改图片的权限
            DB::table('images')->where('id',1)->update(['path' => $destination.'/'.$name]);
            return true;
        } else {
            return false;
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_21885337/article/details/81139795