【前言】
? ?本文介绍下如何实现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/');
?
?
?
?
?
?
?
?
.