【前言】
本文介绍下如何实现thinkphp——上传新图并且删除旧图的操作
【主体】
原理很简单,与上传操作原理类似。不过在上传前添加了删除操作。
(1)控制器里添加操作
//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入门和介绍~!! ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。支持WIN/Unix服务器环境。
thinkphp, ThinkPHP3.2 ——基于PHP5的简单快速的面向对象的PHP框架
该版本主要包含了一些历史安全更新,建议还在使用3.2.*版本的进行更新。是否无缝更新取决于你是否有修改核心框架.
微信大转盘源码 —— thinkPHP后台 账号admin 密码123456
之前的thinkphp3.2.2上传多张图片功能在thinkphp3.2.3上实现
在ThinkPHP中,要实现文件的上传,在编写代码时要知道如何配置
ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南
兄弟连新版ThinkPHP视频教程源代码——狄成浩
运用ThinkPHP技术进行上传,上传后可对指定的文件进行物理删除和删除数据库中的指定的名称
thinkphp5 实现pdf的下载和excel的上传和下载demo 下载并解压到你配置好的虚拟主机项目目录下即可
PHP实例开发源码——Thinkphp6.0+vue框架开发个人虚拟物品发卡网站源码
ThinkPHP3.2 批量上传图片 tp上传图片 已经实践
thinkphp上传插件
终于不要ajax 就可以上传预览图片了,不占资源,自由提交才上传文件
使用Thinkphp3.2进行多文件上传下载管理.上传类型无限制,
PHP Framework ThinkPHP——为API开发而设计的高性能PHP框架。基于PHP8.0+重构 升级PSR依赖;依赖think-orm3.0版本;6.0/6.1无缝升级
PHP实例开发源码——双鱼林基于ThinkPHP5图书管理系统demo
ThinkPHP2.1.0 RBAC示例操作演示.chm ThinkPHP2.1.0 RBAC示例操作演示.chm ThinkPHP2.1.0 RBAC示例操作演示.chm
thinkphp 上传头像
ThinkpHP整合uploadify插件批量上传图片、预览、删除,同时支持入库、预览和删除功能……