关于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 相关文章推荐
PHP中cookies使用指南
Mar 16 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
PHP积分兑换接口实例
Feb 09 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
php实现微信支付之企业付款
May 30 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
php-msf源码详解
2017/12/25 PHP
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
js实现网页收藏功能
2015/12/17 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
Python实现多行注释的另类方法
2014/08/22 Python
使用Python编写vim插件的简单示例
2015/04/17 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
python实现随机漫步算法
2018/08/27 Python
一看就懂得Python的math模块
2018/10/21 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
数控专业大学生的自我鉴定
2013/11/13 职场文书
质量管理标语
2014/06/12 职场文书
班级课外活动总结
2014/07/09 职场文书
辞职信的写法
2015/02/27 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server