首页 > 代码库 > 新浪SAE环境下使用UEditor

新浪SAE环境下使用UEditor

在这个博客中,使用了百度UEditor编辑器,这个编辑器确实不错,开源,而且实现了许多常用的功能。这是官网给出的介绍:UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码...

 

我 这个博客是放在新浪SAE上的,每次在测试程序的都是现在本地测试,如果成功,就上传到SAE,这次使用Ueditor编辑器也是这样,在本地测试成功 后,就上传到SAE,但在发表博客时,却发现上传图片失败,搜索变了各种方法,仍然没用,后来用firebug看了一下,返回的错误是在SAE上创建目录 失败,才知道SAE上是没有写的权限的,才找到错误所在。

 

最终在Ueditor之SAE移植这篇博客里找到了解决方法,像作者致敬。

 

首先需要在新浪SAE的Storage里新建一个domain,我就新建了一个zjzhome的文件夹。

 

1、修改Uploader.class.php

这里有两个方法和目录有关,需要修改。

第一处,是move_uploaded_file处,改成如下:

// SAE环境修改开始if ( $this->stateInfo == $this->stateMap[ 0 ] ) {    if(!defined(‘SAE_TMP_PATH‘)){        // 非SAE环境中        if ( !move_uploaded_file( $file[ "tmp_name" ] , $this->fullName ) ) {            $this->stateInfo = $this->getStateInfo( "MOVE" );        }    }else{        // SAE环境中        $st=new SaeStorage();        $url=$st->upload(‘upload‘,$this->fullName, $file[ "tmp_name" ]);        if(!$url){            $this->stateInfo = $this->getStateInfo( "MOVE" );        }else{            $this->fullName=$url;        }    }}// SAE环境修改结束

通过判断程序环境来执行不同的程序,如果不在SAE环境下,就可以执行默认代码,否则,上传至Storage。

 

第二处,修改getFolder方法。

private function getFolder(){    $pathStr = $this->config[ "savePath" ];    if ( strrchr( $pathStr , "/" ) != "/" ) {        $pathStr .= "/";    }    $pathStr .= date( "Ymd" );    // 增加判断SAE环境,以兼容普通环境    if(!defined(‘SAE_TMP_PATH‘)){        if ( !file_exists( $pathStr ) ) {            if ( !mkdir( $pathStr , 0777 , true ) ) {                return false;            }        }    }    return $pathStr;}

同样需要判断环境,至此,图片上传已经修改成功。

 

2、上传图片后图片不显示的问题

 

此时需要修改editor.config.js文件,将其中的path修改为空,例如将imagePath:URL+"php/"修改为imagePath:""。

其他的类似修改即可。这样就可以显示了。

 

大家可以去原作者的博客去看,作者还修改了图片管理的功能。