百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

Ueditor文本编辑器的图片删除功能实现

yuyutoo 2024-10-12 01:13 6 浏览 0 评论

核心思想:

第一步:上传到临时文件夹下temp

第二步:当文章添加成功后将temp文件夹下的上传图片移动到以“文章ID”命名的文件夹下

第三步:修改detail中的图片路径信息,将“temp”换成“文章ID”

详细过程:仅说明一下关键点

第一步:引入Ueditor的相关js文件并对Ueditor的相关配置

window.UEDITOR_CONFIG.imagePath='/PHPxueba16/Uploads/temp/';//在博文中显示上传的图片

第二步:上传图片处理函数

//百度Ueditor上传图片处理:

public function upload(){

import('ORG.Net.UploadFile');

$upload=new UploadFile();

//关键点一:设置临时上传目录

if($upload->upload('./Uploads/temp/')){

$info=$upload->getUploadFileInfo();

//添加水印:使用自定义类

import('Class.Image',APP_PATH);

//Image::water('./Uploads/'.$info[0]['savename']);//图片水印

Image::text('./Uploads/temp/'.$info[0]['savename']);//文字水印

//关键点二:将上传的所有文件名保存到Session中,方便不同控制器之间的调用

$_SESSION['article'][]=$info[0]['savename'];

echo json_encode(array(

'url'=>$info[0]['savename'],

'title'=>htmlspecialchars($_POST['pictitle'], ENT_QUOTES),

'original'=>$info[0]['name'],

'state'=>'SUCCESS'

));

}else{

echo json_encode(array(

'state'=>$upload->getErrorMsg()

));

}

}

第三步:添加文章的处理(分两种情况)

第一种:文章标题等字段和“内容字段”在不同的表中

详情可参考“BuyGroup27项目中的addGood控制器中的相关内容”,这里仅简单梳理一下思路:

$content=$data['goods_detail']['detail'];//要修改的文章内容

$gid=$this->db->add($data['goods'];//添加文章成功后,返回的文章ID

$data['goods_detail']['detail']=$this->aimage($content, $gid);//对文章内容进行处理,再赋值给添加字段

M('goods_detail')->add($data['goods_detail']);//添加处理后的文章内容

/**

* 功能:Ueditor上传图片处理,服务于“垃圾处理机制”

* 将临时文件夹temp中的图片文件移动到以“文章ID”命名的文件夹下

* 方面以后对文章图片的管理。

* 两个部分:

* 第一部分:更改数据库中“图片路径”

* 第二部分:移动图片

* @param unknown $content 文章内容

* @param unknown $gid 文章ID号

* @return mixed 处理后的文章内容

*/

public function aimage($content, $gid){

//$_SESSION['article']是“upload()”传过来的!

if(!empty($_SESSION['article'])) {//判断文章是否上传图片/falsh,若上传图片/flash,则需要转移图片/flash到相关目录下

//创建目录:源目录和新目录

$srcpath="./Uploads/temp/";

$path="./Uploads/Article/images/".$gid.'/';

if(!file_exists($path)) {

//mkdir($path, 0777, true);

if (!mkdir($path, 0777, true)) {

$this->error("创建目录失败!");

}

}

//更改文章内容中图片路径以及移动文件

foreach($_SESSION['article'] as $filename) {

$content = str_replace("temp/".$filename, "Article/images/".$gid."/".$filename, $content);

rename($srcpath.$filename, $path.$filename);//移动图片/flash

}

$_SESSION['article']=array();

}

return $content;

}

第二种:文章标题等字段和“内容字段”在同一张表中

仅说明几个关键点:

$content=$data['goods_detail']['detail'];//要修改的文章内容

unset($data['goods_detail']['detail']);//这样就不会被插入到数据库当中!

//为数据库添加文章内容的字段值:更改aimage()方法的返回值

return D('Article')->where('id='.$lastid)->setField("content",$content);

相关推荐

MATLAB实例讲解—求二元函数的极值

实例程序...

解析式大赛的获奖作品代码和公式公布啦!

上方超级数学建模可加关注传播数学干货,学会理性的方式去思考问题大家期待已久的运行代码终于新鲜出炉了!!!抱歉让各位粉丝久等了接下来就是揭秘奇迹的时刻1、emoji解析式:无代码:holdon...

基于MATLAB的ACC控制算法设计及仿真测试

作者...

MATLAB基础学习之坐标转换(matlab改坐标)

(一)平面坐标转换1.cart2pol:将笛卡尔坐标转换为极坐标;2.pol2cart:将极坐标转换为笛卡尔坐标;(二)立体坐标转换1.cart2sph:将笛卡尔坐标转换为极坐标;2.sph2cart...

Java NIO:从 Buffer、Channel、Selector 到 Zero-copy、I/O 多路复用

NIO...

「太极创客」零基础入门学用物联网 - MQTT篇 1-9 自我测试

到目前为止,我们已经掌握了MQTT通讯的基本流程以及如何使用ESP8266来发布和订阅MQTT消息。这节课我们来进行自我测试。...

用豆包改了一下午程序,感觉它聪明得超乎想象

之前低估了AI的聪明程度,AI持续学习下去,未来可以做的事情太多了,编程已经算是比较复杂的事情都能完成得这么好,那些项目计划、工作报告更是小儿科。今天用豆包改了几个程序,提出的BUG也能修改完成...

Node-Media-Server开源流行Nodejs流媒体服务器

简介Node-Media-Server一个Node.js实现的RTMP/HTTP/WebSocket/HLS/DASH流媒体服务器。开源github地址:https://github.com/il...

如何应对 RAG 开发挑战?12 个痛点逐一击破

受到论文《SevenFailurePointsWhenEngineeringaRetrievalAugmentedGenerationSystem》的启发,并结合实际开发RAG(检...

团队协作-代码格式化工具clang-format

环境:clang-format:10.0.0前言统一的代码规范对于整个团队来说十分重要,通过git/svn在提交前进行统一的ClangFormat格式化,可以有效避免由于人工操作带来的代码格式问题。C...

如何编写自己的Arduino库?(arduino怎么自己写库)

支持一对一答疑的购买地址...

Auto CAD 命令(A)(cad命令aaw)

ABOUT(命令)显示有关产品的信息。...

一文读懂设计模式,看这篇就够了(设计模式是干嘛的)

转载:javadoop.com/post/design-pattern一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的,花...

ASL开发者指南:构建健壮高效的C++应用

1.库介绍AdobeSourceLibraries(ASL),现在由stlab维护,是一组专注于提供高质量、经过实战检验的C++组件的集合。它最初由Adobe公司开发,旨在解决构建...

linux下GDB使用方法(linux怎么用gdb调试)

gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,GDB主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程...

取消回复欢迎 发表评论: