关于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 相关文章推荐
很实用的一个完整email发送程序
Oct 09 PHP
PHP的面试题集,附我的答案和分析(一)
Nov 19 PHP
php json_encode奇怪问题说明
Sep 27 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
Jun 05 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
linux下php上传文件注意事项
Jun 11 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
CI框架网页缓存简单用法分析
Dec 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
php include的妙用,实现路径加密
2008/07/29 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
PHP中常用的魔术方法
2017/04/28 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
Python实现的批量下载RFC文档
2015/03/10 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
flask实现验证码并验证功能
2019/12/05 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
优秀求职信
2014/05/29 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
2019各种承诺书范文
2019/06/24 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Pytest中conftest.py的用法
2021/06/27 Python
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android