关于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调用数据库的存贮过程
Oct 09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
PHP代码优化的53个细节
Mar 03 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
php的4种常用运行方式详解
Dec 22 PHP
php中钩子(hook)的原理与简单应用demo示例
Sep 03 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中curl_multi的应用
2013/07/17 PHP
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
js返回顶部实例分享
2016/12/21 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
python中sys.argv参数用法实例分析
2015/05/20 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
Django 用户认证组件使用详解
2019/07/23 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
python学生管理系统的实现
2020/04/05 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
个人授权委托书
2014/04/03 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
努力学习保证书
2015/02/26 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
生日祝酒词大全
2015/08/10 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
Python实现归一化算法详情
2022/03/18 Python
Java字符串逆序方法详情
2022/03/21 Java/Android