UEditor图片跨域上传解决方案

预设环境

客户端修改

修改1:/ueditor/ueditor.config.js

将原有的serverUrl注释掉,然后在下面新增一行,内容为

, serverUrl: "http://www.bbb.com/ueditor/php/controller.php"

如图:

修改2:/ueditor/php/config.json

修改文件访问路径前缀,具体为,将该文件中所有以UrlPrefix结尾的参数,修改为http://www.bbb.com

如图:

修改3:增加回调函数

在http://www.aaa.com根目录下,新建一个ue_upload_callback.php文件,内容如下:

$ueUploadCallback = new UeUploadCallback();
call_user_func_array(array($ueUploadCallback,'index'),array());

class UeUploadCallback {
    public function index() {
        die($_REQUEST['ueResult']);
    }
}

图片服务器端修改

服务器端,只需要修改/ueditor/php/controller.php一个文件即可。主要就是增加一个callbackUrl参数,用于跨域时的数据回调,同时增加跨域权限设置。

1. 增加跨域权限设置

header('Access-Control-Allow-Origin:http://www.aaa.com');
header('Access-Control-Allow-Methods:POST,GET,OPTIONS');
header('Access-Control-Allow-Credentials:true');
$requestMethod = $_SERVER['REQUEST_METHOD'];
if ($requestMethod == 'OPTIONS') {
    header('Content-Type:text/plain charset=UTF-8');
    header('Content-Length: 0',true);
    header('status: 204');
    header('HTTP/1.0 204 No Content');
} else {
    header('Access-Control-Allow-Headers:Origin,X-Requested-With,X_Requested_With,Content-Type,Accept');
}

2. 增加跨域回调参数

将原有的代码

/* 输出结果 */
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;
}

修改为

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

注意:此处的ueResult参数,客户端将通过该参数,获取UEditor返回的数据。

客户端调用

<script id="container" name="content" type="text/plain"></script>
<script type="text/javascript">
    var ue = UE.getEditor('container');
    ue.ready(function() {
        //绑定自定义的回调URL
        ue.execCommand('serverparam', {
            'callbackUrl': 'http://www.aaa.com/ue_upload_callback.php'
        });
    });
</script>

 

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页