当前位置: 首页 > news >正文

Springboot3+vue3实现富文本编辑器功能

wangeditor 官网

https://www.wangeditor.com/

安装

//cd vuenpm install @wangeditor/editor --save npm install @wangeditor/editor-for-vue@next  --save

引入

import '@wangeditor/editor/dist/css/style.css'
import {onBeforeUnmount,reactive,ref,shallowRef} from "vue";
import {Editor,Toolbar} from "@wangeditor/editor-for-vue";

初始化(表单中)

wangEditor 5 富文本字段可以直接和 form 中的字段使用 v-model 进行绑定

<el-form-item prop="content" label="详情"><div style="border: 1px solid #ccc;width: 100%"><Toolbarstyle="border-bottom: 1px solid #ccc":editor="editorRef":mode="mode"/><Editorstyle="height: 500px;overflow-y:hidden"v-model="data.form.content":mode="mode":defaultConfig="editorConfig"@onCreated="handleCreated"/></div></el-form-item>
/*  wangEditor5 初始化开始 */
const editorRef = shallowRef() // 编辑器实例,必须用 shallowRef
const mode = 'default'
const editorConfig = { MENU_CONF:{} }
// 上传图片配置
editorConfig.MENU_CONF['uploadImage'] = {headers:{token:data.goods.token,},server: 'http://localhost:9999/files/wang/upload', // 服务器图片上传接口fieldName:'file' // 服务器图片上传接口参数
}
// 组件销毁时,也及时销毁编辑器,否则可能会造成内存泄漏
onBeforeUnmount(() => {const editor = editorRef.valueif(editor == null)returneditor.destroy()
})
// 记录 editor 实例,重要!!!
const handleCreated = (editor) => {editorRef.value = editor
}
/*  wangEditor5 初始化结束 */
 <el-table-column  label="内容" align="center"><template #default="scope"><el-button type="primary" @click="viewContent(scope.row.content)">点击查看</el-button></template></el-table-column><el-dialog title="商品详情" v-model="data.viewVisible" width="60%" destroy-on-close><div v-html="data.content" style="padding: 0 20px"></div></el-dialog>
onst data = reactive({content:null,viewVisible:false,
})const viewContent = (content) => {data.content = contentdata.viewVisible =true
}

后端文件上传接口

 /*** wang=editor 编辑器文件上传接口*/@PostMapping("/wang/upload")public Map<String, Object> wangEditorUpload(MultipartFile file){String flag = System.currentTimeMillis() + "";String fileName = file.getOriginalFilename();try {String filePath = System.getProperty("user.dir") + "/files/";//  文件存储形式:时间戳-文件名FileUtil.writeBytes(file.getBytes(),filePath + flag + "-" + fileName);System.out.println(fileName + "--上传成功");Thread.sleep(1L);}catch (Exception e){System.err.println(fileName + "--上传失败");}String http ="http://localhost:9999/files/download/";Map<String, Object> resMap = new HashMap<>();// wangEditor 上传图片成功后,需要返回的参数resMap.put("errno",0);resMap.put("data", CollUtil.newArrayList(Dict.create().set("url", http + flag + "-" + fileName)));return resMap;}
http://www.jsqmd.com/news/426882/

相关文章:

  • 八数码与双向广搜
  • GLM-4-9B-Chat-1M在金融领域的应用:财报自动分析与报告生成
  • Keil5 MDK开发STM32时,如何调用Nanbeige 4.1-3B生成调试注释
  • BGE Reranker-v2-m3实战教程:将重排序结果接入Elasticsearch插件实现混合检索增强
  • Fish-Speech-1.5算法优化实战:降低语音延迟至150ms
  • 通用GUI编程技术——什么是DPI?
  • gemma-3-12b-it部署教程:Ubuntu/CentOS/Windowns三平台兼容方案
  • Python入门实战:用CCMusic构建第一个音乐分类程序
  • PETRV2-BEV模型训练指南:从预训练权重加载到微调训练全流程
  • EVA-02模型压力测试与性能调优:应对高并发请求
  • 告别手写春联!用AI一键生成马年专属对联,效果惊艳
  • Neeshck-Z-lmage_LYX_v2优化升级:低显存显卡也能流畅运行AI绘画
  • Lychee-rerank-mm模型解析:架构设计与核心技术解读
  • 零基础入门DAMOYOLO-S:快速部署通用物体检测服务
  • 小白也能懂:Qwen3-ForcedAligner-0.6B快速上手教程
  • Wan2.1-UMT5模型轻量化:STM32嵌入式设备上的推理可行性探讨
  • Mathtype公式处理:Gemma-3-12B-IT学术文档自动化
  • 前端集成FUTURE POLICE:JavaScript实现实时语音上传与解析预览
  • EVA-01实际作品集:Qwen2.5-VL-7B图文理解在科幻艺术分析中的高精度输出
  • DeOldify与ComfyUI工作流整合:可视化图像上色方案搭建
  • Guohua Diffusion 驱动游戏美术生产:快速生成场景原画与角色立绘
  • AutoGen Studio详细步骤:Qwen3-4B-Instruct-2507模型Base URL配置与API兼容性验证
  • HUNYUAN-MT 7B翻译终端AI编程助手场景:解释错误信息与翻译代码片段
  • Z-Image-Turbo_Sugar脸部Lora性能调优:降低GPU显存占用的5个技巧
  • 实时口罩检测模型剪枝:减少参数量保持精度的技巧
  • 黑丝空姐-造相Z-Turbo实战案例:利用卷积神经网络优化图像生成质量
  • Face3D.ai Pro商业应用:数字人直播解决方案
  • Ostrakon-VL-8B新手入门:从图片上传到智能分析完整指南
  • FireRedASR-AED-L应用落地:盲文出版机构语音→无障碍文本转换
  • 基于Transformer的语义理解优化:文脉定序系统核心原理与效果展示