关于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 相关文章推荐
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 PHP
浅谈PHP中的
Apr 23 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
php7中停止php-fpm服务的方法详解
May 09 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
PHP DataGrid 实现代码
2009/08/12 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
Python中字典的setdefault()方法教程
2017/02/07 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
绿色环保口号
2014/06/12 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
2014年质检员工作总结
2014/11/18 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS