慢慢来比较快,虚心学技术
前言:前后端分离的项目,需要使用ueditor富文本编辑器,因为是未接触过的前后端分离,所以遇到了新的问题
问题:因为UEditor需要与后端代码结合,即将配置文件config.json放在服务器端访问,但是项目运行前端无法上传图片,报后端配置文件初始化失败的错误,config.json如下
问题分析:前后端分离的项目中前端无权直接访问后端静态资源,导致UEditor无法读取配置文件config.json
解决方案:将配置文件config.json放在src/main/resource中,然后重写UEditor.jar的源码,前端通过访问后端上传接口,读取配置文件(替代直接读取静态文件的方式)
1. 反编译UEditor.jar的源码,得到代码结构如下:
2.摘录其中最重要的代码片段-读取配置文件:
public final class ConfigManager {
private final String rootPath;
private final String originalPath;
private final String contextPath;
private static final String configFileName = "config.json";
private String parentPath = null;
private JSONObject jsonConfig = null;
// 涂鸦上传filename定义
private final static String SCRAWL_FILE_NAME = "scrawl";
// 远程图片抓取filename定义
private final static String REMOTE_FILE_NAME = "remote";
/*
* 通过一个给定的路径构建一个配置管理器, 该管理器要求地址路径所在目录下必须存在config.properties文件
*/
private ConfigManager(String rootPath, String contextPath, String uri) throws FileNotFoundException, IOException {
rootPath = rootPath.replace("\\", "/");
this.rootPath = rootPath;
this.contextPath = contextPath;
this.originalPath = "src/main/resources/config.json";
this.initEnv();
}