关于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 相关文章推荐
mysql limit查询优化分析
Nov 12 PHP
PHP 数组教程 定义数组
Oct 23 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
YII路径的用法总结
Jul 09 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 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
神族 PROTOSS 概述
2020/03/14 星际争霸
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
详解Python中namedtuple的使用
2020/04/27 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
安全隐患整改报告
2014/11/06 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
宾馆客房管理制度
2015/08/06 职场文书
《所见》教学反思
2016/02/23 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL