• 技术文章 >php教程 >php手册

    关于UEditor编辑器远程图片上传失败的解决办法

    2016-06-13 11:58:28原创364
    远程图片上传是个很有意思的东西,比如你从别的网站复制一段文件,如果文字中带有图片,编辑器会自动将图片提取出来,进行上传,从而不用担心远程图片失效后,自己本地也无法浏览。

      通过检查,发现远程图片上传的操作页面是:getRemoteImage.php 。打开后我们先配置 savePath ,因为不同用户使用,需要存放到不同的目录,以免混乱,也方便管理

      修改后代码:

    复制代码 代码如下:


    //远程抓取图片配置
    if(isset($_SESSION['admin'])){
    $myPath = 'http://www.jb51.net/../dofiles/ueditorUpload/admin/'.$_SESSION['admin']['id'].'//m.sbmmt.com/m/';
    }else if(isset($_SESSION['user'])){
    $myPath = 'http://www.jb51.net/../dofiles/ueditorUpload/user/'.$_SESSION['user']['id'].'//m.sbmmt.com/m/';
    }else{
    $myPath = 'http://www.jb51.net/../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,如果之前版本也有相关问题,按照修改思路去修改应该也可以解决。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:通过缓存数据库结果提高PHP性能的原理介绍 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP 页面跳转到另一个页面的多种方法方法总结• 我的论坛源代码(五)• 谈谈你对Zend SAPIs(Zend SAPI Internals)的理解• 通过缓存数据库结果提高PHP性能• PHP弹出提示框并跳转到新页面即重定向到新页面
    1/1

    PHP中文网