PHP(Thinkphp5)实现上传更换图片

问题引入:

 当点击修改时(前端传值问题在这不多说,这里主要讲解后台上传,前台传值问题请参考我的上一篇博客:https://blog.csdn.net/qq_40820862/article/details/83683980),使图片发生替换.

实例解决思路:

由于上传的图片都指定在服务器上的某个目录,然后数据库中记录链接这个图片的"链接",所以

1.先获取前端传入的id值和图片

2.判断是否选中了图片才点击的上传.

3.进行文件上传,选择上传目录

4.获取到上传的文件目录(可用字符串拼接出上传目录路径)

5(可选)如果路径存在问题(比如    ' \ '       ' / '  错乱,可以用替换函数替换 )

6.将拼接的字符串插入到数据库中,使数据库中的链接是你所上传图片的链接.

实例代码:

/**
	 * 轮播图片 -> 获取前端要修改的id和新图片
	 */
	public function edit_images(Request $request, $id){

		// 接收前端传来点击修改的id的值和前端在本地选择想要更换上传的图片 -> 获取表单上传文件 
		$file = request()->file('file');
		// 判断是否有上传的图片
		if($file == null) {
			$this->error("很抱歉,您未选择图片!!");
		}
		// 进行文件上传
		$info = $file->rule('md5')->move('./static/index/images/slideshow/');
		// 获取上传文件的目录
		$saveName = $info->getsaveName();
		$str = "/Blogs/public/static/index/images/slideshow/". $saveName;
		// strtr 字符串替换函数 -> 将路径的\\替换成
		$str1 = strtr($str, '\\', '/');
		// 将拼接成的字符串路径插入到数据库中
		$code = Db::execute("update all_heads set all_images='$str1' where id = '$id'");
		// 判断数据是否成功插入到数据库中
		if($code) {
			$this->redirect("allimages");
		} else {
			$this->error("很抱歉,轮播图更换失败!!");
		}
	}

更换成功后,数据库中的图片链接也跟随着发生了变化.

猜你喜欢

转载自blog.csdn.net/qq_40820862/article/details/83684064