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。将|换成.
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
带你了解真正黑客入侵的常用手段及防护措施
越来越多的人能够接触到互联网。这促使许多组织开发基于web的应用程序,用户可以在线使用这些应用程序与组织进行交互。为web应用程序编写的糟糕代码可能被利用来获得对敏感数据和web服务器的未经授权的访问。 在本文中,我将向你介绍web应用程序黑客技术,以及你可以采取的防止此类攻击的应对措施。 什么是web应用程序?什么是网络威胁? web应用程序(又名网站)是基于客户机--服务器模型的应用程序。服务器提供数据库访问和业务逻辑。它托管在web服务器上。客户机应用程序在客户机web浏览器上运行。Web应用程序通常是用Java、c#和VB等语言编写的。web应用中使用的数据库引擎包括MySQL、MS SQL Server、PostgreSQL、SQLite等。 大多数web应用程序部署在可以通过Internet访问的公共服务器上。由于易于访问,这使得它们容易受到攻击。以下是常见的web应用程序的威胁。 SQL注入——这种威胁的目标可能是绕过登录算法,破坏数据,等等。 拒绝服务攻击——这种威胁的目标可能是拒绝合法用户对资源的访问。 跨站点脚本XSS——这种威胁的目标可能是注入可以在客户端浏览器上...
- 下一篇
COVID-19可能会推动云计算和边缘计算的发展
根据PMMI商业智能的一份最新报告,目前47%的领先CPG和46%的中小企业正在使用云计算,只有20%的领先CPG和极少数的中小企业使用边缘计算策略,不过由于COVID-19,这两种策略的使用确实加快了。 云计算使制造商能够远程、实时地访问生产数据和控制。通过不断地将数据上传到云端,制造商可以全面了解他们的运营情况,监控产品在哪里,控制生产线在做什么,并分析收集到的数据,而不需要实际出现在生产现场。边缘计算实现了云计算的许多相同优势,但没有远程访问数据的选项。 该报告指出,“许多制造商对完全远程连接到其运营中的想法感到不安,担心来自外部来源的渗透和潜在破坏。”引入边缘计算是为了缓解云安全担忧-数据仍然上传到集中存储库,但必须在本地访问。一家干货架货物业务的工程高级经理表示:“我们不允许在线访问控制系统;与原始设备制造商的访问是根据具体情况进行的,有多个级别的批准。” CPG指出,在讨论远程连接成为规范之前,以下要素是“必须具备的”:与工厂网络隔离的虚拟专用网络连接;IT部门的深入批准;以及与供应商的可信合作关系。 然而,在COVID-19大流行病期间,云计算和边缘计算的优势可能变得更具...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度