关于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 memcache扩展的三种安装方法
Apr 26 PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
php实现的mongodb操作类实例
Apr 03 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
tp5.1框架数据库子查询操作实例分析
May 26 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
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Python爬取三国演义的实现方法
2016/09/12 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
python使用正则筛选信用卡
2019/01/27 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
python模拟斗地主发牌
2020/04/22 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
英国著名的化妆品折扣网站:Allbeauty.com
2016/07/21 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
技术合作协议书范本
2014/04/18 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
个人收入证明格式
2015/06/24 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python