我使用ueditor作为富文本编辑器,配置已经好了,上传功能也好了。
现在的问题是当使用ueditor上传图片的时候,选择了图片就立刻上传到指定的文件夹里,而后续即使没有保存该篇文章内容,即取消操作,图片还是上传了,就相当于上传的图片是无用的,没有给任何文章或者用户来使用,该如何删除这些无用的图片啊?限制图片的自动上传?
研究了半天,终于搞定了,主要思路是先把图片存放到临时文件夹ueditor_temp里,然后提交的时候通过正则表达式遍历的方式匹配查找图片,然后把图片转移到实际的文件夹中。

$content=$_POST['content'];
if(!empty($content))
{
//正则表达式匹配查找图片路径
$pattern='/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.jpeg|\.png]))[\'|\"].*?[\/]?>/i';
preg_match_all($pattern,$content,$res);
$num=count($res[1]);
for($i=0;$i<$num;$i++)
{
$ueditor_img=$res[1][$i];
//新建日期文件夹
$tmp_arr=explode('/',$ueditor_img);
$datefloder='./Public/Upload/ueditor/image/'.$tmp_arr[5];
if(!is_dir($datefloder))
{
mkdir($datefloder,0777);
}
$tmpimg='.'.$ueditor_img;
$newimg=str_replace('/ueditor_temp/','/ueditor/',$tmpimg);
//转移图片
if(rename($tmpimg, $newimg))
{
$content=str_replace('/ueditor_temp/','/ueditor/',$content);
}
}
}

 

 下次编辑文章内容的时候使用同样的思路,不过要先判断是否是新上传的图片,原来的就不要动了。
还有一种情况是原来已经上传的图片在被编辑的时候删除了,虽然数据库修改了,但是文件还在,所以需要和原内容进行比较之后删除。
//转移ueditor文件
if(!empty($content))
{
//正则表达式匹配查找图片路径
$pattern='/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.jpeg|\.png]))[\'|\"].*?[\/]?>/i';
preg_match_all($pattern,$content,$res);
$num=count($res[1]);
for($i=0;$i<$num;$i++)
{
$ueditor_img=$res[1][$i];
//判断是否是新上传的图片
$pos=stripos($ueditor_img,"/ueditor_temp/");
if($pos>0)
{
//新建日期文件夹
$tmp_arr=explode('/',$ueditor_img);
$datefloder='./Public/Upload/ueditor/image/'.$tmp_arr[5];
if(!is_dir($datefloder))
{
mkdir($datefloder,0777);
}
$tmpimg='.'.$ueditor_img;
$newimg=str_replace('/ueditor_temp/','/ueditor/',$tmpimg);
//转移图片
if(rename($tmpimg, $newimg))
{
$content=str_replace('/ueditor_temp/','/ueditor/',$content);
}
}else {
$imgarr[]=$ueditor_img;
}
}
}
//删除在编辑时被删除的原有图片
if(!empty($_POST['oldcontent']))
{
//正则表达式匹配查找图片路径
$pattern='/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.jpeg|\.png]))[\'|\"].*?[\/]?>/i';
preg_match_all($pattern,$_POST['oldcontent'],$oldres);
$num=count($oldres[1]);
for($i=0;$i<$num;$i++)
{
$delimg=$oldres[1][$i];
if(!in_array($delimg, $imgarr))
{
$delimg='.'.$delimg;
unlink($delimg);
}
}
}
这样问题就解决了,当然没有用的图片会都存在ueditor_temp文件夹里,不过是手动删除还是做个小程序来删除都是可以的。
希望对大家有帮助。

ueditor上传图片配置成功,但是如何删除无用的图片的更多相关文章

  1. ueditor上传图片配置

    1 去ueditor文件夹下 找 ueidtors/dialogs/image/image.html -- 配置位置大概如下: 107   utils.domReady(function(){ 108 ...

  2. ueditor的配置和使用

    ueditor下载好之后直接复制到项目的WebContent目录下,并将ueditor\jsp\lib下的jar包复制或者剪切到项目的lib目录下.先看一下效果,如下: 1.文件的上传 首先在uedi ...

  3. UEditor上传图片被压缩得模糊的解决方法

    UEditor功能很强大,但是有个很不友好的功能:会在使用UEditor上传图片时,如果你的原始图片尺寸过大,就会先自动对图片大小进行压缩,然后将压缩的文件给servlet.也就是说,使用UEdito ...

  4. asp.net 百度编辑器 UEditor 上传图片 图片上传配置 编辑器配置 网络连接错误,请检查配置后重试

    1.配置ueditor/editor_config.js文件,将 //图片上传配置区 ,imageUrl:URL+"net/imageUp.ashx" //图片上传提交地址 ,im ...

  5. UEditor上传图片到七牛云储存(c#)

    我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费 ...

  6. UEditor上传图片到七牛云储存(java)

    我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费 ...

  7. ueditor上传图片到七牛云存储(form api,java)

    转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 ...

  8. SpringBoot中使用UEditor基本配置(图文详解)

    SpringBoot中使用UEditor基本配置(图文详解) 2018年03月12日 10:52:32 BigPotR 阅读数:4497   最近因工作需要,在自己研究百度的富文本编辑器UEditor ...

  9. Android lint 删除无用图片文件和配置文件

    Android lint  删除无用.冗余的  配置文件和 图片资源    转载请注明  http://blog.csdn.net/aaawqqq?viewmode=contents Android项 ...

随机推荐

  1. [development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存

    这个事来自dpdk, 所以, 先参考. http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html 当前, 假设你已经读过上边内容, 知道大页内存时候, dp ...

  2. RHEL5.5的安装文档

    ---恢复内容开始--- 1.1 安装操作系统 (1) 按“ENTER”键,进入图形模式安装: (2) 检测CD,点击“Skip”跳过: (3) 安装界面显示,点击“Next”: (4) 选择语言为“ ...

  3. java web指定主页

    正常情况下主页是在web.xml里面配置欢迎页面,可以加个过滤器重定向就可以: public void doFilter(ServletRequest req, ServletResponse res ...

  4. 【PyQt5-Qt Designer】PyQt5+pyecharts 实现GUI界面的数据可视化展示

    先用纯Python代码写一个简单的小案例: from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication,QWidget ...

  5. Nor Flash 驱动框架

    框架入口源文件: lcd.c (可根据入口源文件,再按着框架到内核走一遍) 内核版本:linux_2.6.22.6      硬件平台:JZ2440 以下是驱动框架: 以下是驱动代码 s3c_nor_ ...

  6. jQuery 学习笔记(2)(jQuery静态方法)

    jQuery静态方法 1.$.each() 和 $.map()  既可以遍历数组也可以遍历伪数组 $.each(arr, function(value, index) { ... } ) $.map( ...

  7. JavaScript深度克隆

    深度克隆函数: function deepClone(obj){ var str = ""; var newobj = obj.constructor === Array ? [] ...

  8. 关于WARN Dispatcher:68 - Could not find action or result报错

    出现这个错 00:03:37,142 WARN Dispatcher:68 - Could not find action or result: /crm/linkMan_addLinkMan.act ...

  9. Nginx Log日志统计分析常用命令

    IP相关统计 统计IP访问量(独立ip访问数量) awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) gr ...

  10. python SMTP

    一.一开始,相信SMTP服务,所以在本机安装了一个 apt-get install sendmail apt-get install sendmail-cf apt-get install squir ...