关于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 相关文章推荐
967 个函式
Oct 09 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
php strftime函数的详细用法
Jun 21 PHP
php文件操作之文件写入字符串、数组的方法分析
Apr 15 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
php 图像函数大举例(非原创)
2009/06/20 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
PHP检测用户语言的方法
2015/06/15 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
运算符&&的三个不同层次
2013/04/07 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
python 通过 socket 发送文件的实例代码
2018/08/14 Python
Python截图并保存的具体实例
2021/01/14 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
《胖乎乎的小手》教学反思
2014/02/26 职场文书
项目合作意向书模板
2014/07/29 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
学生自我评语
2015/01/04 职场文书
小学思想品德教学反思
2016/02/24 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python