富文本编辑器Ueditor实战(三)-springboot集成

简介: 通过本文,您可了解springboot如何集成ueditor,如何自定义扩展后端的文件上传功能。

     前面的富文本编辑器Ueditor实战(一)和富文本编辑器Ueditor实战(二)-图片上传简单介绍了Ueditor能做啥以及Ueditor的简单配置。实际项目中,我们会结合具体的技术栈来进行扩展,本文以Springboot单体架构为例,前端使用thymeleaf集成ueditor。通过本文,您可了解springboot如何集成ueditor,如何自定义扩展后端的文件上传功能。

     环境说明:

     springboot2.2.13.RELEASE+jdk1.8+maven3.3.9+thymeleaf2.3.13+ueditor1.4.3

第一步、创建springboot项目以及pom.xml 配置

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yelang</groupId><artifactId>boot-ueditor</artifactId><version>1.0.0</version><name>ueditor with springboot</name><description>ueditor集成springboot案例,集成图片上传等功能</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.13.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><dependency><groupId>com.github.theborakompanioni</groupId><artifactId>thymeleaf-extras-shiro</artifactId><version>2.0.0</version></dependency></dependencies></project>

系统配置文件说明:

# 项目相关配置system:# 名称  name: boot-ueditor
# 版本  version: 1.0.0# 文件路径 示例( Windows配置D:/boot-ueditor,Linux配置 /home/boot-ueditor)  profile: D:/boot-ueditor
server:  port: 8080spring:  thymeleaf:    cache: false    encoding: UTF-8
    mode: HTML
#prefix: classpath:/templates/#suffix: .html    servlet:      content-type: text/html
# 文件上传  servlet:     multipart:# 单个文件大小       max-file-size:  50MB
# 设置总上传的文件大小       max-request-size:  300MB

第二步、工程目录结构大致如下:

image.png

第三步、修改自定义的json配置,使用后台bean的方式进行配置。

首先定义一个普通的javaBean,如下:

image.png

在controller中定义ueditor配置文件的访问接口

@GetMapping(value="/opt",params="action=config")
@ResponseBodypublicObjectconfig() {
UeditorConfigVoconfig=newUeditorConfigVo();
StringurlPrefix=Constants.RESOURCE_PREFIX+"/upload/";
config.setImageUrlPrefix(urlPrefix);
config.setVideoUrlPrefix(urlPrefix);
config.setFileUrlPrefix(urlPrefix);
returnconfig;
    }

在这里,设置映射的静态资源目录为图片、视频、附件等资源的访问前缀,在文件上传成功后直接返回访问的前缀即可。

第四步、thymeleaf页面定义,引入相关的js资源

<!DOCTYPEhtml><htmllang="zh"xmlns:th="http://www.thymeleaf.org"><head><title>springboot整合thymeleaf和ueditor实例</title><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><scripttype="text/javascript"charset="utf-8"th:src="@{/ueditor1_4_3_3/ueditor.config.js?v=1.4.3.3}"></script><scripttype="text/javascript"charset="utf-8"th:src="@{/ueditor1_4_3_3/ueditor.all.js?v=1.4.3.3}"></script><!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败--><!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文--><scripttype="text/javascript"charset="utf-8"th:src="@{/ueditor1_4_3_3/lang/zh-cn/zh-cn.js?v=1.4.3.3}"></script><styletype="text/css">div {
width: 100%;
}
</style></head><body><div><scriptid="editor"type="text/plain"style="width: 100%; height: 500px;"></script></div><scriptth:inline="javascript">varurl= [[@{/ueditor/opt}]];
//实例化编辑器//建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例varue=UE.getEditor('editor',{serverUrl: url});
</script></body></html>

第五步、自定义后台文件上传接收器

@PostMapping(value="/opt",params="action=uploadimage")
@ResponseBodypublicMap<String,String>uploadImage(@RequestParam("upfile") MultipartFilefile) throwsIOException {
returnthis.fileProcess(file);
}
@PostMapping(value="/opt",params="action=uploadvideo")
@ResponseBodypublicMap<String,String>uploadVideo(@RequestParam("upfile") MultipartFilefile) throwsIOException {
returnthis.fileProcess(file);
}
@PostMapping(value="/opt",params="action=uploadfile")
@ResponseBodypublicMap<String,String>uploadFile(@RequestParam("upfile") MultipartFilefile) throwsIOException {
returnthis.fileProcess(file);
}
privateMap<String,String>fileProcess(MultipartFilefile) throwsFileSizeLimitExceededException, IOException{
Map<String,String>map=newHashMap<String, String>(4);
StringoriginalFilename=file.getOriginalFilename();
StringfileType=originalFilename.substring(originalFilename.lastIndexOf("."));
StringfileName=FileUploadUtils.upload(SysConfig.getUploadPath() +"/",file,fileType);
map.put("state", "SUCCESS");
map.put("url", fileName);
map.put("title", originalFilename);
map.put("original", originalFilename);
returnmap;
  }

上述代码采用params参数来区分不同的请求,前台也可以设置后台指定一个固定的上传接口即可(可参考官方的说明)。

       通过以上的实例可以完成自定义的图片、附件等上传的功能,并且可以在前台看到上传的资源在富文本编辑器中。

ps:有兴趣的朋友可以试下mp4资源的上传是什么效果。怎么解决mp4上传后的问题,后续会再出一篇博文进行详细的介绍,欢迎关注。

目录
相关文章
|
5月前
|
人工智能 自然语言处理 API
快速集成GPT-4o:下一代多模态AI实战指南
快速集成GPT-4o:下一代多模态AI实战指南
486 101
|
8月前
|
缓存 监控 安全
通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》
本文档详细介绍了基于通义大模型的CRM系统集成架构设计与优化实践。涵盖混合部署架构演进(新增向量缓存、双通道同步)、性能基准测试对比、客户意图分析模块、商机预测系统等核心功能实现。同时,深入探讨了安全防护体系、三级缓存架构、请求批处理优化及故障处理机制,并展示了实时客户画像生成和动态提示词工程。通过实施,显著提升客服响应速度(425%)、商机识别准确率(37%)及客户满意度(15%)。最后,规划了技术演进路线图,从单点集成迈向自主优化阶段,推动业务效率与价值持续增长。
374 8
|
5月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
849 12
|
5月前
|
开发工具 Android开发 开发者
用Flet打造跨平台文本编辑器:从零到一的Python实战指南
本文介绍如何使用Flet框架开发一个跨平台、自动保存的文本编辑器,代码不足200行,兼具现代化UI与高效开发体验。
724 0
|
6月前
|
人工智能 自然语言处理 分布式计算
AI 驱动传统 Java 应用集成的关键技术与实战应用指南
本文探讨了如何将AI技术与传统Java应用集成,助力企业实现数字化转型。内容涵盖DJL、Deeplearning4j等主流AI框架选择,技术融合方案,模型部署策略,以及智能客服、财务审核、设备诊断等实战应用案例,全面解析Java系统如何通过AI实现智能化升级与效率提升。
519 0
|
9月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
619 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
9月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1906 4
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
256 9
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
468 0