springboot + ueditor 配置文件初始化失败

springboot + ueditor使用时,要对接上传功能(上传功能包括:图片上传,图片列表上传,视频上传,涂鸦上传....).那么,我们就需要知道ueditor是怎么进行上传的。

我以前也用过这个,不需要很麻烦就能解决这个问题。但是,我以前用的不是springboot 项目。就是一个普通的web项目。使用自带的controller.jsp 进行图片保存。但是,现在,我想自定义保存路径。用的也是springboot。

当加载UE的时,会进行访问上传配置文件的请求。访问失败。出现如下两种错误提示:

  • {state: "配置文件初始化失败"}
  • {"state": "\u914d\u7f6e\u6587\u4ef6\u521d\u59cb\u5316\u5931\u8d25"}

其实这两种错误提示是一种,下边的是unicode编码。转换为中文就是上边的信息。

那么,怎么解决?

配置文件出现错误了,那就排查哪里出现错误了。既然是上传的配置文件的访问出现了问题,那就去找这个访问接口。

 @RequestMapping("config")
    public void config( HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("application/json");
        String rootPath = request.getSession().getServletContext().getRealPath("/");
        System.out.println("rootPath:"+ rootPath);
        try {
            String exec = new ActionEnter(request, rootPath).exec();
            PrintWriter writer = response.getWriter();
            writer.write(exec);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

首先讲解一下上述是做什么的(代码是错误的,也就是controller.jsp中的操作)。我是边解决问题,边记录想法(这个问题有点大)。

上边用到了rootPath与 创建了一个ActionEnter对象,并把这个对象的exec方法的值进行了返回。

new ActionEnter(request,rootPath):创建一个ActionEnter对象,这个对象中还有其他的操作。查看源码不难发现。

exec方法:是返回操作的结果描述。

我们了解了一个大概。还有一条发现,我们打开带编辑器的页面的时候会进行一次访问接口,点击图片上传功能的时候又会再此访问同一接口。(在第一次访问处理的时候,我直接硬生生的把配置文件中的json读取出来扔回去了。并没有其他的操作。配置文件初始化失败这个错误没有了。但是,也没有了上传功能)。

我调试了一下发现最后的问题出现的是:

 String configContent = this.readFile(this.getConfigPath());

系统找不到指定的路径。好吧,那就是他生成的路径有问题。那么,我们回过头来看他怎么生成路径的。

经过调试发现,rootPath的值缺少路径:"/WEB-INF/classes/static"。完整的如下:

@RequestMapping("jsp/config")
    public void config( HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("application/json");
        String rootPath = request.getSession().getServletContext().getRealPath("/") + "/WEB-INF/classes/static";
        System.out.println("rootPath:"+ rootPath);
        try {
            String exec = new ActionEnter(request, rootPath).exec();
            PrintWriter writer = response.getWriter();
            writer.write(exec);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

不详细的解释源码了。如果你找别人的解决方式并不能解决您的问题。那么,尝试一下看看百度的源码。

发布了145 篇原创文章 · 获赞 6 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/m0_37626203/article/details/103490337
今日推荐