spring boot 若依系统整合Ueditor,部署时候上传图片错误解决

前言:国庆假期找了个ruoyi版本的cms玩玩,从git上看,介绍如下图:

后台部分截图:

编辑

编辑

编辑

编辑

前台blog截图:

编辑

编辑

看上去还可以不错,于是clone下来玩玩,结果发现,发布文章的时候,编辑器有问题,上传不了图片,还有其他几个地方有问题,怎么解决呢?自己上手撸代码,修改呗。于是,下载了ueditor的源码,加到项目中,进行修改。现在已经修改完成,并且也发布到的服务器上了,欢迎大家访问测试。文末会有凯哥修改后的git地址o~

正文:

在spring boot整合UEditor的时候,本地idea编辑器中没问题,但是部署服务器上,上传图片提示:“后端配置项没有正常加载,上传插件不能正常使用!”解决办法。

出现这种情况,可以很负责任的告诉你99%是因为,在加载的时候,没有获取到ueditor的config.json文件。怎么处理了?

分析原因:

查看原来文件存放位置:

在resources的static下,正常来说,是没有问题的。但是spring boot打成jar包后的路径和war包的路径是不一样的。文件是在BOOT-INF下的。如下图:

编辑

直接获取,是不行的。找到原因后,我们就来想办法解决掉。

解决步骤:

1:修改文件存放位置。

如凯哥,直接就放在了resources下,文件名称为:ueditor-config.json(这个文件名字,在后面需要用到)。如下图:

编辑

2:在yml文件中,配置ueditor-config.json的文件名:

uEditorConfig:
  fileName: ueditor-config.json

如下图:

编辑

3:编写一个controller(ps:JSP的凯哥没有使用,修改成了controller.这样符合习惯)

3.1:获取json文件名称

需要注意:把第二步配置的文件名称,获取到。如下图:

编辑

3.2:编写获取json的类(上传的也写在了里面)。如下图:

编辑

4:修改Ueditor的源码

4.1:ActionEnter类的构造方法重写。

/**
 * 获取config.json的
 * @param request
 * @param rootPath
 * @param configFileName
 */
public ActionEnter (HttpServletRequest request, String rootPath,String configFileName ) {
   this.request = request;
   this.rootPath = rootPath;
   this.actionType = request.getParameter( "action" );
   this.contextPath = request.getContextPath();
   this.configManager = ConfigManager.getInstance( this.rootPath, this.contextPath, request.getRequestURI(),configFileName );
}

如下图:

编辑

4.2:重写ConfigManager.getInstance方法

/**
 * 配置管理器构造工厂--修改后
 * @param rootPath 服务器根路径
 * @param contextPath 服务器所在项目路径
 * @param uri 当前访问的uri
 * @param configFileName config.json的文件名称
 * @return 配置管理器实例或者null
 */
public static ConfigManager getInstance ( String rootPath, String contextPath, String uri,String configFileName  ) {

   try {
      return new ConfigManager(rootPath, contextPath, uri,configFileName);
   } catch ( Exception e ) {
      return null;
   }

}

如下图:

编辑

4.3:重写ConfigManager构造器

/*
 * 通过一个给定的路径构建一个配置管理器, 该管理器要求地址路径所在目录下必须存在config.properties文件--kaigejava修改
 */
private ConfigManager ( String rootPath, String contextPath, String uri,String configFileName) throws FileNotFoundException, IOException {

   rootPath = rootPath.replace( "\\", "/" );

   this.rootPath = rootPath;
   this.contextPath = contextPath;
   this.configFileName = configFileName;

   if ( contextPath.length() > 0 ) {
      this.originalPath = this.rootPath + uri.substring( contextPath.length() );
   } else {
      this.originalPath = this.rootPath + uri;
   }

   this.initEnv();
}

如下图:

编辑

private void initEnv () throws FileNotFoundException, IOException {
   
   File file = new File( this.originalPath );
   
   if ( !file.isAbsolute() ) {
      file = new File( file.getAbsolutePath() );
   }
   
   this.parentPath = file.getParent();
   
   //String configContent = this.readFile( this.getConfigPath() );
   String configContent = this.filter(IOUtils.toString(this.getClass().getClassLoader().getResourceAsStream(configFileName),"UTF-8"));
   try{
      JSONObject jsonConfig = JSONObject.parseObject(configContent);
      this.jsonConfig = jsonConfig;
   } catch ( Exception e ) {
      this.jsonConfig = null;
   }
   
}

其中核心的:

String configContent = this.filter(IOUtils.toString(this.getClass().getClassLoader().getResourceAsStream(configFileName),"UTF-8"));

修改后,如下图:

编辑

把ueditor.config.js文件的serverUrl修改成第一步编写的controller对应的url.如下图:

编辑

修改完成之后,重新打包之后,部署完成,发布访问试试看。就可以了。

源码获取:凯哥Java(kaigejava),回&|复:kaige-cms。即可获取本系统源码了.blog体验域名:www|jiahaoyou|net。将|换成.

spring boot 若依系统整合Ueditor,部署时候上传图片错误解决的更多相关文章

  1. spring boot与jdbcTemplate的整合案例2

    简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: ...

  2. Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏

    Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏 云收藏项目已经开源3年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时 ...

  3. Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    Spring Boot 2 (四):使用 Docker 部署 Spring Boot Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常 ...

  4. spring boot项目如何测试,如何部署

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...

  5. Spring Boot(十六):使用Jenkins部署Spring Boot

    Spring Boot(十六):使用Jenkins部署Spring Boot jenkins是devops神器,介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署 ...

  6. Spring Boot 中使用 MyBatis 整合 Druid 多数据源

    2017 年 10 月 20 日   Spring Boot 中使用 MyBatis 整合 Druid 多数据源 本文将讲述 spring boot + mybatis + druid 多数据源配置方 ...

  7. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  8. Spring Boot数据访问之整合Mybatis

    在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...

  9. 使用Spring Boot操作Hive JDBC时,启动时报出错误:NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDef

    使用Spring Boot操作Hive JDBC时,启动时报出错误:NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDef ...

  10. (转)Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏

    http://www.ityouknow.com/springboot/2018/04/02/docker-favorites.html 云收藏项目已经开源2年多了,作为当初刚开始学习 Spring ...

随机推荐

  1. VUE商城项目 -权限功能 - 手稿

  2. Java 、C# Excel模板,数据一对多,主从表关系,导入到数据库

    思路 单表导入的比较容易,但是有的时候,可能会出现,一对多数据导入的,这个情况怎么办呢?先理解上面的图,后台获取数据的时候,除了"风险防控措施"外,其他字段先分组,"黄色 ...

  3. yolov5 筛选正样本流程 代码多图详解

    yolov5正样本筛选原理 正样本全称是anchor正样本,正样本所指的对象是anchor box,即先验框. 先验框:从YOLO v2开始吸收了Faster RCNN的优点,设置了一定数量的预选框, ...

  4. API网关实践-网易云轻舟微服务

    微服务最佳实践中,我们需要通过统一的 API 网关进行服务能力的共享,API 网关为用户提供发布.管理.保护和监控 API的能力,帮助用户在自己的多个系统之间,或者内部系统与合作伙伴以及第三方的系统之 ...

  5. Windows 10 LTSC中个人版OneDrive失效的问题

    该问题是由于LTSC注册表无onedriver的id{A52BBA46-E9E1-435f-B3D9-28DAA648C0F6}定义导致,解决方案是新建一个reg_onedrive.reg文件,并编辑 ...

  6. [oeasy]教您玩转python - 0002 - 你好世界(hello world!)

    ​ 你好世界 回忆上次内容 这次我们, 了解了 Python 进入了 Python 退出了 Python 这并不难 这就是我们对于 Python 的初体验 恭喜您存活了下来! ​ 编辑 python ...

  7. 【JavaScript】前端算法题(重建二叉树、反向输出链表每个节点)

    前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树.反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的 ...

  8. 【Python】Django学习1

    按黑马程序员的美多商场作方向: https://www.bilibili.com/video/BV1nf4y1k7G3 一.应用创建.注册处理.配置 Pycharm 创建Django项目: 自应用注册 ...

  9. 【Java】Springboot + Redis +(AOP & 响应外切)切面实现字典翻译

    使用案例演示: 先开发了一个简单的Demo: 普通DTO类注解翻译的字段和翻译来源 在需要翻译的方法上注解@Translate 接口返回结果: 框架思路: 1.标记的注解需要通过AOP切面在调用的时候 ...

  10. 【PostgreSQL】下载安装PgSQL

    官网下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Windows平台 官网直接提供exe安装包, ...