关于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 相关文章推荐
IIS下配置Php+Mysql+zend的图文教程
Dec 08 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
PHP 金额数字转换成英文
May 06 PHP
php调用mysql数据 dbclass类
May 07 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
PHP ADODB实现分页功能简单示例
May 25 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
laravel框架中间件简单使用方法示例
Jan 25 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 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魔术变量用法实例详解
2014/11/13 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python实现剪切功能
2019/01/23 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
初中生学习生活的自我评价
2013/11/20 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
广播体操口号
2014/06/18 职场文书
房屋过户委托书范本
2014/10/07 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
python数字转对应中文的方法总结
2021/08/02 Python
Hive日期格式转换方法总结
2022/06/25 数据库