`

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

    博客分类:
  • PHP
PHP 
阅读更多

【前言】

   本文介绍下如何实现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——开源PHP框架

    ThinkPHP入门和介绍~!! ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。支持WIN/Unix服务器环境。

    thinkphp_3.2.4.rar

    《深入理解ThinkPHP 3.2.4框架》 ThinkPHP 3.2.4是ThinkPHP框架的一个重要版本,其主要关注历史安全更新,旨在为开发者提供更稳定、更安全的开发环境。这个版本的发布,对于那些仍在使用3.2.*系列的开发者来说,是...

    微信大转盘源码 —— thinkPHP后台

    微信大转盘源码 —— thinkPHP后台 账号admin 密码123456

    thinkphp, ThinkPHP3.2 ——基于PHP5的简单快速的面向对象的PHP框架.zip

    3. **数据库支持**:ThinkPHP3.2提供了强大的数据库操作功能,包括数据库连接池、SQL执行效率分析、事务处理等,支持多种数据库如MySQL、SQLite、PostgreSQL等。 4. **模板引擎**:内置了强大的模板引擎,支持模板...

    thinkphp3.2.3上传多张图片+上传完预览

    在ThinkPHP中,文件上传主要依赖于`Upload`类,该类提供了文件上传的基本操作,包括验证文件类型、大小、重命名文件等功能。在`ThinkPHP\Library\Think`目录下,找到`Upload.class.php`文件,这是处理文件上传的核心...

    thinkPHP删除单个文件

    本篇文章将详细讲解如何在ThinkPHP框架下实现单个文件的删除操作,包括物理删除和数据库中记录的删除。 首先,我们需要理解文件系统和ThinkPHP框架如何交互。在ThinkPHP中,文件操作主要依赖于PHP内置的文件函数,...

    兄弟连新版ThinkPHP视频教程源代码——狄成浩

    《兄弟连新版ThinkPHP视频教程源代码——狄成浩》是一套全面介绍ThinkPHP框架的实战教学资源,由知名IT教育机构“兄弟连”提供,主讲人为狄成浩。这套教程通过源代码实例,帮助学员深入理解并掌握ThinkPHP框架的使用...

    Thinkphp5实现pdf和excel 上传下载demo

    总的来说,这个Demo提供了关于ThinkPHP5处理文件上传和下载的实际应用案例,对于学习和快速集成文件操作功能非常有帮助。通过这种方式,开发者能够更好地理解和实践Web开发中的文件管理,提升项目的用户体验。

    thinkphp3.2多图上传预览+模板提交到后台

    标题 "thinkphp3.2多图上传预览+模板提交到后台" 描述了一个使用ThinkPHP3.2框架实现的多图上传功能,该功能允许用户在不依赖AJAX的情况下预览图片,并且只有在用户确认提交时才会真正上传文件,从而节省服务器资源...

    ThinkPHP数据操作指南

    ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南ThinkPHP数据操作指南

    ThinkPHP3.1.3图片上传实例

    ThinkPHP3.1.3图片上传实例 ThinkPHP 3.1.3 图片上传实例是基于 ThinkPHP 框架的图片上传解决方案,通过将上传和缩略图处理扩展放在 TP 核心中,直接覆盖压缩包中的 ThinkPHP 即可。 一、将上传和缩略图处理扩展...

    thinkphp_thinkphp_thinkphp5_

    首先,我们要理解ThinkPHP5的核心设计理念——“简洁、快速、优雅”。它遵循MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理和视图展示分离,使代码更易于维护和扩展。其中,模板(View)部分是用户...

    thinkphp多图片上传.zip

    在本案例中,"thinkphp多图片上传.zip"是一个包含实现多图片上传功能的资源包,特别关注了违禁词的过滤以及前端批量上传和预览的能力。 1. **ThinkPHP框架介绍**:ThinkPHP是一个基于MVC(Model-View-Controller)...

    ThinkPHP3.2 批量上传图片

    总结来说,批量上传图片在ThinkPHP3.2中涉及的关键知识点包括:MVC模式的理解、`Request`类的使用、文件上传的处理、文件安全验证、数据库操作以及前端表单的构建。通过掌握这些知识点,开发者能够构建出高效且健壮...

    ThinkPHP_v5.0.7.zip_ThinkPHP V5.0.7_thinkphp

    首先,我们要了解ThinkPHP的核心理念——"快速、简单"。在ThinkPHP V5.0.7中,这一理念得到了充分的体现。它采用模块化设计,使得项目结构清晰,代码组织有序,大大简化了开发流程。同时,该框架支持自动路由和控制...

    thinkphp5 多图片上传

    在本文中,我们将深入探讨如何使用ThinkPHP5框架与前端的Plupload库来实现多图片上传、修改和删除的功能。ThinkPHP5是中国流行的PHP开发框架,它提供了丰富的功能和优秀的性能,而Plupload则是一个强大的多文件上传...

    ThinkpHP整合uploadify插件批量上传图片

    本文将详细讲解如何使用ThinkPHP框架结合uploadify插件来实现这一功能,包括图片的预览、删除以及数据库的入库操作。 首先,`ThinkPHP`是一个基于PHP的轻量级开源框架,它提供了丰富的MVC(模型-视图-控制器)结构...

    thinkphp uploadify图片批量上传

    "thinkphp uploadify图片批量上传"是一个基于ThinkPHP框架和Uploadify插件实现的解决方案,旨在为用户提供方便快捷的图片上传体验。下面我们将详细探讨这个主题。 首先,**ThinkPHP** 是一个轻量级的PHP开发框架,...

    腾讯云cos+阿里云oss+thinkphp3.2上传文件驱动

    1、框架版本:thinkphp3.2版本、thinkcmfX3.2 2、PHP版本:7.2.5以上,以下版本使用腾讯云官方对应版本的sdk自行替换 (https://cloud.tencent.com/document/product/436/12266) 3、后续会上传thinkphp5以上版本的...

    Thinkphp3.2文件上传

    在这个场景中,我们将深入探讨如何在ThinkPHP3.2版本中实现文件上传和下载的管理。 1. **文件上传基础** - **文件表单提交**:在HTML中,使用`<input type="file">`标签可以让用户选择本地文件进行上传。通过设置`...

Global site tag (gtag.js) - Google Analytics