uedit修改文件上传路劲,支持api文件接口

首先修改一个东西ueditor/ueditor.config.js

 

 serverUrl: URL + "php/controller.php" 原来
 serverUrl: "http://www.zx.com/app.php?m=index&a=rich_editor_upload_one_pic" 最好使用绝对路径,因为多图上传的时候也调用的是这个

 

   控制器文件index.php 的rich_editor_upload_one_pic 方法

rich_editor_upload_one_pic 在mvc里面最好不要有权限控制,不然会有意向不到的意外

 public function rich_editor_upload_one_pic() {


        date_default_timezone_set("Asia/chongqing");
        error_reporting(E_ERROR);
        header("Content-Type: text/html; charset=utf-8");
        $url = SYSTEM_ROOT . '/Public/hplus/plugins/ueditor/php/config.json'; //必须读取,不然报错
        $CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents($url)), true);
        $action = $_GET['action'];

        switch ($action) {
            case 'config':
                $result = json_encode($CONFIG);
                break;

            /* 上传图片 */
            case 'uploadimage':
                $this->do_pic();

                break;
            /* 上传涂鸦 */
            case 'uploadscrawl':
            /* 上传视频 */
            case 'uploadvideo':
            /* 上传文件 */
            case 'uploadfile':
//                $result = include("action_upload.php");
                $this->do_pic();
                break;

            /* 列出图片 */
            case 'listimage':
                $result = include("action_list.php");
                break;
            /* 列出文件 */
            case 'listfile':
                $result = include("action_list.php");
                break;

            /* 抓取远程文件 */
            case 'catchimage':
                $result = include("action_crawler.php");
                break;

            default:
                $result = json_encode(array(
                    'state' => '请求地址出错'
                ));
                break;
        }

        /* 输出结果 */
        if (isset($_GET["callback"])) {
            if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
                echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
            } else {
                echo json_encode(array(
                    'state' => 'callback参数不合法'
                ));
            }
        } else {
            echo $result;
        }
    }


  public function do_pic() {

        $exts = M("Config")->where("name='file_exts'")->getField("value");

        $info = uploadFile('Contract', $exts, $err);
        if (!$info) {
           $return = array(
                "state" => "FAIL", //上传状态,上传成功时必须返回"SUCCESS"
                "url" => '', //返回的地址
                "title" => "", //新文件名
                "original" => "", //原始文件名
                "type" => "", //文件类型
                "size" => ""           //文件大小
            );
            exit(json_encode($return));
        }
        if (C("SERVERFILE_STATUS") == 0) {
            $data['url'] = $info['0']['file'];
        } else {//启用文件服务器
            $data['url'] = C("SERVERFILE_URL") . $info['savepath'] . $info['savename'];
        }
//必要的返回格式
$return = array( "state" => "SUCCESS", //上传状态,上传成功时必须返回"SUCCESS" "url" => $data['url'], //返回的地址 "title" => "", //新文件名 "original" => "", //原始文件名 "type" => "", //文件类型 "size" => "" //文件大小 ); exit(json_encode($return)); }

 

如果只是没有使用接口文件服务器,或者外网文件服务器,建议使用nfs挂载虚拟目录,这样既不用担心权限问题,也不担心性能问题,当然比如我现在这种蛋疼的情况,比较特殊

如果是本地或者nfs,需要修改上传路径,请修改php文件夹下面的config.json文件,注释很清楚

 

比如你的api接口就是支持多文件上传的那么file=name[]就是这样的,multiple="multiple"

如果你在ue里面需要用到

ueditor.all.js 的24486行

'<input id="edui_input_' + timestrap + '" type="file" accept="image/*" name="' + me.options.imageFieldName + "[]"+'" ' +  //改好的
'<input id="edui_input_' + timestrap + '" type="file" accept="image/*" name="' + me.options.imageFieldName +'" ' +   //原来的

ajaxfileupload多文件上传也会这样,但是只有html5支持

也需要 file=name[]这样

posted on 2016-11-14 12:30  zh7314  阅读(1340)  评论(0编辑  收藏  举报