美文网首页
后端配置项没有正常加载,上传插件不能正常使用

后端配置项没有正常加载,上传插件不能正常使用

作者: 秋元_92a3 | 来源:发表于2020-04-12 12:21 被阅读0次

UEditor 富文本编辑器,在控制台报错

经过多方Google,百度,问题都没有得到解决,最后通过探索源码,自己去探索答案。由于我是个java后端开发,所以在解读前端代码的时候,有不准确的地方,还请帮忙指正。
刷新界面的时候,报错如下

后台配置项返回格式出错,上传功能将不能正常使用!                ueditor.all.min.js:2373

源码探索

跟踪报错的源码:

 function () {
  function d(b) {
        console && console.error(b)
    }

    var c = this;
    setTimeout(function () {
        try {
            c.options.imageUrl && c.setOpt("serverUrl", c.options.imageUrl.replace(/^(.*[\/]).+([\.].+)$/, "$1controller$2"));
            var b = c.getActionUrl("config"), a = p.isCrossDomainUrl(b);
            c._serverConfigLoaded = !1;
            b && UE.ajax.request(b, {
                method: "GET", dataType: a ? "jsonp" : "", onsuccess: function (b) {
                    try {
                        var e = a ? b : eval("(" + b.responseText + ")");
                        p.extend(c.options, e);
                        c.fireEvent("serverConfigLoaded");
                        c._serverConfigLoaded = !0
                    } catch (l) {
                        d(c.getLang("loadconfigFormatError"))
                    }
                },
                onerror: function () {
                    d(c.getLang("loadconfigHttpError"))
                }
            })
        } catch (e) {
            d(c.getLang("loadconfigError"))
        }
    })
};

当初始化页面的时候,这里会通过ajax调用后端,加载UEditor的配置文件;由于这里使用的是jsp的代码,我这里调用后端的地址是

http://localhost:8089/ajax/libs/ueditor/1.4.3/jsp/controller.jsp?action=config

对于jsp还是php,这个在Ueditor的配置文件中都可以配置,修改对应(udietor.config.js)的下面的配置即可:

,serverUrl: URL + "jsp/controller.jsp"

这里发送请求之后,会把后端的返回的结果的,解析成json,通过调试,发现我这里的返回结果是:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="com.baidu.ueditor.ActionEnter"
    pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%

    request.setCharacterEncoding( "utf-8" );
    response.setHeader("Content-Type" , "text/html");
    
    String rootPath = application.getRealPath( "/" );
    
    out.write( new ActionEnter( request, rootPath ).exec() );
    
%>

我没有写错,他返回的就是上面的结果,也就是说,jsp没有完成它应有的解析,它是被当作一个静态资源被加载的,看jsp内部的代码,它实际上做的就是在读取jsp内部的配置文件,那为啥不直接加载jsp内部的config文件呢?
于是将上面的controller的地址,直接改成jsp内部json的配置文件的地址。

serverUrl: URL + "jsp/config.json"

看效果,发现加载配置已经能够成功,点下富文本编辑器上附件按钮,发现弹出框上已经没有任何异常。


image.png

尝试上传图片,发现上传失败,查看控制台,尴尬了:


image.png
//请求地址:[http://localhost:8089/ajax/libs/ueditor/1.4.3/jsp/config.json?action=uploadfile&encode=utf-8](http://localhost:8089/ajax/libs/ueditor/1.4.3/jsp/config.json?action=uploadfile&encode=utf-8)
Failed to load resource: the server responded with a status of 405 ()

以此知道了那个jsp的另一个功能,上传文件的等action,作者使用的jsp+servlet技术相关功能。servlet对于我来将算是比较古老的技术,于是决定重写一下相关的功能代码,并对相关代码进行升级,把文件上传到oss上。

重构的后端代码,参照我的这篇简书
https://www.jianshu.com/p/379d0c664adf

相关文章

网友评论

      本文标题:后端配置项没有正常加载,上传插件不能正常使用

      本文链接:https://www.haomeiwen.com/subject/mmxpphtx.html