关于UEditor编辑器远程图片上传失败的解决办法


Posted in PHP onAugust 31, 2012

远程图片上传是个很有意思的东西,比如你从别的网站复制一段文件,如果文字中带有图片,编辑器会自动将图片提取出来,进行上传,从而不用担心远程图片失效后,自己本地也无法浏览。

通过检查,发现远程图片上传的操作页面是:getRemoteImage.php 。打开后我们先配置 savePath ,因为不同用户使用,需要存放到不同的目录,以免混乱,也方便管理

修改后代码:

//远程抓取图片配置 
if(isset($_SESSION['admin'])){ 
$myPath = 'https://3water.com/../dofiles/ueditorUpload/admin/'.$_SESSION['admin']['id'].'/'; 
}else if(isset($_SESSION['user'])){ 
$myPath = 'https://3water.com/../dofiles/ueditorUpload/user/'.$_SESSION['user']['id'].'/'; 
}else{ 
$myPath = 'https://3water.com/../dofiles/ueditorUpload/unkonw/'; 
} 
$config = array( 
"savePath" => $myPath , //保存路径 
"allowFiles" => array( ".gif" , ".png" , ".jpg" , ".jpeg" , ".bmp" ) , //文件允许格式 
"maxSize" => 3000 //文件大小限制,单位KB 
);

 然后问题就来了,UEditor 里,文件、图片上传都是通过 Uploader.class.php 这个php类操作的,但远程图片上传则不是。

我在85行发现,创建路径的时候,单纯的使用了mkdir进行来创建,因为mkdir不能创建带有层级的路径,所以导致在路径如果不存在的情况下,复制远程图片上传失败。

知道问题处理起来就容易了,我先写一个循环创建文件目录的函数(因为之前写过,这里就直接拿来用了):

//连续创建带层级的文件夹 
function recursive_mkdir($folder){ 
$folder = preg_split( "/[\\\\\/]/" , $folder ); 
$mkfolder = ''; 
for($i=0; isset($folder[$i]); $i++){ 
if(!strlen(trim($folder[$i]))){ 
continue; 
} 
$mkfolder .= $folder[$i]; 
if(!is_dir($mkfolder)){ 
mkdir("$mkfolder",0777); 
} 
$mkfolder .= DIRECTORY_SEPARATOR; 
} 
}

然后修改85行:
//创建保存位置 
$savePath = $config[ 'savePath' ]; 
if ( !file_exists( $savePath ) ) { 
recursive_mkdir($savePath); 
//mkdir( "$savePath" , 0777 ); 
}

这样一来,就没有问题了。

这问题也已经提交给百度官方,希望修正。

测试UEditor版本为1.2.3.0,如果之前版本也有相关问题,按照修改思路去修改应该也可以解决。

PHP 相关文章推荐
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
php curl选项列表(超详细)
Jul 01 PHP
php实现指定字符串中查找子字符串的方法
Mar 17 PHP
php获取当前页面完整URL地址
Dec 30 PHP
全新Mac配置PHP开发环境教程
Feb 03 PHP
CI框架常用方法小结
May 17 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
php数组一对一替换实现代码
Aug 31 #PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 #PHP
PHP的简易冒泡法代码分享
Aug 28 #PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 #PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 #PHP
PHP 图片水印类代码
Aug 27 #PHP
PHP setTime 设置当前时间的代码
Aug 27 #PHP
You might like
一步一步学习PHP(3) php 函数
2010/02/15 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python实现坦克大战
2020/04/24 Python
使用python实现学生信息管理系统
2021/02/25 Python
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
趣味游戏活动方案
2014/02/07 职场文书
渡河少年教学反思
2014/02/12 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
学校工作推荐信范文
2014/07/11 职场文书
人事局接收函
2015/01/31 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis
MySQL 语句执行顺序举例解析
2022/06/05 MySQL