关于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 禁止页面缓存输出
Jan 07 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
php实现CSV文件导入和导出
Oct 24 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
Laravel 验证码认证学习记录小结
Dec 20 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 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
PHP实现文件上传与下载
2020/08/28 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
浅析vue component 组件使用
2017/03/06 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
python读写二进制文件的方法
2015/05/09 Python
Python定时任务sched模块用法示例
2018/07/16 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
python 实现波浪滤镜特效
2020/12/02 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
前台接待的工作职责
2013/11/21 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
入职担保书怎么写
2014/05/12 职场文书
白血病募捐倡议书
2014/05/14 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
工作感想范文
2015/08/07 职场文书
教师节主题班会教案
2015/08/17 职场文书