实现图片的上传分为两个部分,第一个部分判断图片是否上传,设置图片的名字,路径,代码如下:
// 插入图片请求,判断上传的文件是否合法,设置图片的路径,图片的名字
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;
}
}