【前言】
本文介绍下如何实现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 3.2.4框架》 ThinkPHP 3.2.4是ThinkPHP框架的一个重要版本,其主要关注历史安全更新,旨在为开发者提供更稳定、更安全的开发环境。这个版本的发布,对于那些仍在使用3.2.*系列的开发者来说,是...
微信大转盘源码 —— thinkPHP后台 账号admin 密码123456
3. **数据库支持**:ThinkPHP3.2提供了强大的数据库操作功能,包括数据库连接池、SQL执行效率分析、事务处理等,支持多种数据库如MySQL、SQLite、PostgreSQL等。 4. **模板引擎**:内置了强大的模板引擎,支持模板...
在ThinkPHP中,文件上传主要依赖于`Upload`类,该类提供了文件上传的基本操作,包括验证文件类型、大小、重命名文件等功能。在`ThinkPHP\Library\Think`目录下,找到`Upload.class.php`文件,这是处理文件上传的核心...
本篇文章将详细讲解如何在ThinkPHP框架下实现单个文件的删除操作,包括物理删除和数据库中记录的删除。 首先,我们需要理解文件系统和ThinkPHP框架如何交互。在ThinkPHP中,文件操作主要依赖于PHP内置的文件函数,...
《兄弟连新版ThinkPHP视频教程源代码——狄成浩》是一套全面介绍ThinkPHP框架的实战教学资源,由知名IT教育机构“兄弟连”提供,主讲人为狄成浩。这套教程通过源代码实例,帮助学员深入理解并掌握ThinkPHP框架的使用...
总的来说,这个Demo提供了关于ThinkPHP5处理文件上传和下载的实际应用案例,对于学习和快速集成文件操作功能非常有帮助。通过这种方式,开发者能够更好地理解和实践Web开发中的文件管理,提升项目的用户体验。
标题 "thinkphp3.2多图上传预览+模板提交到后台" 描述了一个使用ThinkPHP3.2框架实现的多图上传功能,该功能允许用户在不依赖AJAX的情况下预览图片,并且只有在用户确认提交时才会真正上传文件,从而节省服务器资源...
ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南
ThinkPHP3.1.3图片上传实例 ThinkPHP 3.1.3 图片上传实例是基于 ThinkPHP 框架的图片上传解决方案,通过将上传和缩略图处理扩展放在 TP 核心中,直接覆盖压缩包中的 ThinkPHP 即可。 一、将上传和缩略图处理扩展...
首先,我们要理解ThinkPHP5的核心设计理念——“简洁、快速、优雅”。它遵循MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理和视图展示分离,使代码更易于维护和扩展。其中,模板(View)部分是用户...
在本案例中,"thinkphp多图片上传.zip"是一个包含实现多图片上传功能的资源包,特别关注了违禁词的过滤以及前端批量上传和预览的能力。 1. **ThinkPHP框架介绍**:ThinkPHP是一个基于MVC(Model-View-Controller)...
总结来说,批量上传图片在ThinkPHP3.2中涉及的关键知识点包括:MVC模式的理解、`Request`类的使用、文件上传的处理、文件安全验证、数据库操作以及前端表单的构建。通过掌握这些知识点,开发者能够构建出高效且健壮...
首先,我们要了解ThinkPHP的核心理念——"快速、简单"。在ThinkPHP V5.0.7中,这一理念得到了充分的体现。它采用模块化设计,使得项目结构清晰,代码组织有序,大大简化了开发流程。同时,该框架支持自动路由和控制...
在本文中,我们将深入探讨如何使用ThinkPHP5框架与前端的Plupload库来实现多图片上传、修改和删除的功能。ThinkPHP5是中国流行的PHP开发框架,它提供了丰富的功能和优秀的性能,而Plupload则是一个强大的多文件上传...
本文将详细讲解如何使用ThinkPHP框架结合uploadify插件来实现这一功能,包括图片的预览、删除以及数据库的入库操作。 首先,`ThinkPHP`是一个基于PHP的轻量级开源框架,它提供了丰富的MVC(模型-视图-控制器)结构...
"thinkphp uploadify图片批量上传"是一个基于ThinkPHP框架和Uploadify插件实现的解决方案,旨在为用户提供方便快捷的图片上传体验。下面我们将详细探讨这个主题。 首先,**ThinkPHP** 是一个轻量级的PHP开发框架,...
1、框架版本:thinkphp3.2版本、thinkcmfX3.2 2、PHP版本:7.2.5以上,以下版本使用腾讯云官方对应版本的sdk自行替换 (https://cloud.tencent.com/document/product/436/12266) 3、后续会上传thinkphp5以上版本的...
在这个场景中,我们将深入探讨如何在ThinkPHP3.2版本中实现文件上传和下载的管理。 1. **文件上传基础** - **文件表单提交**:在HTML中,使用`<input type="file">`标签可以让用户选择本地文件进行上传。通过设置`...