关于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 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
目录,文件操作详谈―PHP
Nov 25 PHP
PHP函数utf8转gb2312编码
Dec 21 PHP
简单的php 验证图片生成函数
May 21 PHP
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
化学相关工作求职信
2013/10/02 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
终止劳动合同协议书
2014/10/05 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
环卫处个人工作总结
2015/03/04 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
python代码实现备忘录案例讲解
2021/07/26 Python
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript