thinkphp——上传新图并且删除旧图的操作_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > thinkphp——上传新图并且删除旧图的操作

thinkphp——上传新图并且删除旧图的操作

 2018/4/27 16:56:29  青春..荒唐  程序员俱乐部  我要评论(0)
  • 摘要:【前言】本文介绍下如何实现thinkphp——上传新图并且删除旧图的操作【主体】原理很简单,与上传操作原理类似。不过在上传前添加了删除操作。(1)控制器里添加操作//addData方法publicfunctionaddData($post,$file){//判断是否有文件上传if($file['error']=='0'){//1.配置数组,定义配置$cfg=array(//配置上传路径'rootPath'=>WORKING_PATH.UPLOAD_ROOT_PATH)
  • 标签:PHP 上传 操作

【前言】

? ?本文介绍下如何实现thinkphp——上传新图并且删除旧图的操作

?

【主体】

? ?原理很简单,与上传操作原理类似。不过在上传前添加了caozuo.html" target="_blank">删除操作。

(1)控制器里添加操作

class="php">//addData方法
		public function addData($post,$file){
			//判断是否有文件上传
			if($file['error'] == '0'){
				//1. 配置数组,定义配置
				$cfg = array(
					//配置上传路径
					'rootPath'	=>	WORKING_PATH . UPLOAD_ROOT_PATH
				);
				$upload = new \Think\Upload($cfg);//2. 实例化上传类
				$info = $upload->uploadOne($file);//3. 上传操作,并接受上传结果
				if ($info) {
					//原图路径,成功后补全字段
					$post['picture'] = UPLOAD_ROOT_PATH . $info['savepath'] . $info['savename'];
					$post['filename'] = $info['name'];//文件的原始名
					$post['hasfile'] = 1;//是否有文件
					//缩略图制作
					$image = new \Think\Image(); //1. 实例化类
					$imgPath = WORKING_PATH.$post['picture'];//2. 打开图片,传递图片路径.统一使用根路径
					$image->open($imgPath);
					$image->thumb(100,100);//3. 制作缩略图,等比缩放
					//4. 保存图片,传入路径--完整路径(绝对路径目录+文件名)
					$image->save(WORKING_PATH.UPLOAD_ROOT_PATH.$info['savepath'].'thumb_'.$info['savename']);
					$post['thumb'] = UPLOAD_ROOT_PATH.$info['savepath'].'thumb_'.$info['savename'];//5. 补全thumb字段
				}
			}
			// 补全字段addtime
			$post['addtime'] = time();
			//添加操作
			return $this->add($post);
		}

(2)更新操作

//更新数据保存
		public function updateData($post,$file){
			if(!$file['error']){
				$cfg = array(
					'rootPath' => WORKING_PATH.UPLOAD_ROOT_PATH
				);
				$fileInfo = M('article')->where('id='.$post['id'])->find();
				$string1=$fileInfo['thumb'];
				$thumb=substr_replace($string1,'',0,15);
				unlink(WORKING_PATH.UPLOAD_ROOT_PATH.$thumb);//删除原来thumb
				$string2=$fileInfo['picture'];
				$picture=substr_replace($string2,'',0,15);
				unlink(WORKING_PATH.UPLOAD_ROOT_PATH.$picture);//删除原来picture
				//上传新附件
				$upload = new \Think\Upload($cfg);
				$info = $upload->uploadOne($file);
				if($info){
					$post['picture'] = UPLOAD_ROOT_PATH . $info['savepath'] . $info['savename'];
					$post['filename'] = $info['name'];//文件的原始名
					$post['hasfile'] = 1;
					//缩略图制作
					$image = new \Think\Image();
					$imgPath = WORKING_PATH.$post['picture'];
					$image->open($imgPath);
					$image->thumb(100,100);
					$image->save(WORKING_PATH.UPLOAD_ROOT_PATH.$info['savepath'].'thumb_'.$info['savename']);
					$post['thumb'] = UPLOAD_ROOT_PATH.$info['savepath'].'thumb_'.$info['savename'];//5. 补全thumb字段
				}else{
					//上传失败
				}
			}else{
				//没有文件,则不进行处理
			}

?

【总结】

? ?①上面标红的地方即为删除原图

? ?②知识点:php 在不知道字符串有多长的情况下,去除前几个字符?

$string='字符串';
$subject=substr_replace(string,'',0,3);

? ?这里我在入口文件定义了工作路径,所以需要截取拼接字符串

//定义工作路径
define('WORKING_PATH', str_replace('\\','/',__DIR__));
//定义上传根目录
define('UPLOAD_ROOT_PATH', '/Public/Upload/');

?

?

?

?

?

?

?

?

.

上一篇: thinkphp字符相关操作 下一篇: 没有下一篇了!
发表评论
用户名: 匿名