【Vue】集成富文本编辑器

这文章使用的是wangeditor插件,官网地址:wangEditor,这个比较简单

安装

npm i wangeditor --save

使用 

<div id="editor"></div>import E from "wangeditor"const editor = new E("#editor")
editor.create()//或者
export default {
data() {return {editor: null}
}
this.editor = new E(`#editor`)//设置参数
this.editor.create() //创建

报错:

原因是在打开表单的时候元素还没创建好,所以找不到

解决方法:

使用NextTick:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

this.$nextTick(() => {this.editor = new E(`#editor`)//设置参数this.editor.create() //创建})

 

销毁编辑器

关闭时销毁,不然下次打开内容还在编辑器中

//在dialog销毁时调用
beforeDestroy() {
this.editor.destroy ()
this.editor = null
}
// 获取编辑器内容
this.editor.txt.html()

配置图片上传

 配置图片上传接口

 @PostMapping("/editor/upload")public Dict editorUpload(MultipartFile file) throws IOException {String originaFilename = file.getOriginalFilename();//文件原始名 a.jpgString mainname = FileUtil.mainName(originaFilename);//aString extname = FileUtil.extName(originaFilename);//jpgFile parentFile = new File(ROOT_PATH);if (!FileUtil.exist(ROOT_PATH)) {//若当前父级目录不存在就创建一个FileUtil.mkdir(ROOT_PATH);}if (FileUtil.exist(ROOT_PATH + File.separator + originaFilename)) {//若当前上传的文件名已存在,则重命名originaFilename = System.currentTimeMillis() + "_" + mainname + "." + extname;//124234_a.jpg}File saveFile = new File(ROOT_PATH + File.separator + originaFilename);file.transferTo(saveFile);//存储到本地String url = "http://localhost:8080/file/download/" + originaFilename;Dict dict=Dict.create().set("errno",0).set("data", CollUtil.newArrayList(Dict.create().set("url",url)));//返回return dict;}

前端使用接口:

this.editor.config.uploadImgServer = this.$baseUrl + '/file/editor/upload'
this.editor.config.uploadFileName = 'file'
this.editor.config.uploadImgHeaders = {token: this.user.token
}


server 接口返回格式,重要!!!

{
"errno": 0,
"data":[{url:"图片地址"}]
}

视频上传

this.editor.config.uploadVideoServer = this.$baseUrl + '/file/editor/upload'this.editor.config.uploadVideoName = 'file'this.editor.config.uploadVideoHeaders = {token: this.user.token}

写到这里报错了,最后发现视频的格式和图片格式要求不一样,视频格式:

 所以需要改一下后端接口,判断是视频还是图片,最后完整代码:

接口:

@PostMapping("/editor/upload")public Dict editorUpload(@RequestParam MultipartFile file, @RequestParam String type) throws IOException {String originaFilename = file.getOriginalFilename();String mainname = FileUtil.mainName(originaFilename);String extname = FileUtil.extName(originaFilename);if (!FileUtil.exist(ROOT_PATH)) {FileUtil.mkdir(ROOT_PATH);}if (FileUtil.exist(ROOT_PATH + File.separator + originaFilename)) {//若当前上传的文件名已存在,则重命名originaFilename = System.currentTimeMillis() + "_" + mainname + "." + extname;//124234_a.jpg}File saveFile = new File(ROOT_PATH + File.separator + originaFilename);file.transferTo(saveFile);//存储到本地String url = "http://localhost:8080/file/download/" + originaFilename;Dict dict = Dict.create().set("errno", 0);if ("img".equals(type)) {dict = Dict.create().set("errno", 0).set("data", CollUtil.newArrayList(Dict.create().set("url", url)));} else if ("video".equals(type)) {dict = Dict.create().set("errno", 0).set("data", Dict.create().set("url", url));}//返回return dict;}

前端:

//编辑显示
this.$nextTick(() => {this.editor = new E(`#editor`)//设置参数this.editor.config.uploadImgServer = this.$baseUrl + '/file/editor/upload'this.editor.config.uploadFileName = 'file'this.editor.config.uploadImgHeaders = {token: this.user.token}this.editor.config.uploadImgParams = {type: 'img'}this.editor.config.uploadVideoServer = this.$baseUrl + '/file/editor/upload'this.editor.config.uploadVideoName = 'file'this.editor.config.uploadVideoHeaders = {token: this.user.token}this.editor.config.uploadVideoParams = {type: 'video'}this.editor.create() //创建this.editor.txt.html(row.content)})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/362430.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猫狗识别—静态图像识别

猫狗识别—静态图像识别 1. 导入必要的库:2. 设置数据目录和模型路径:3. 定义图像转换4. 使用GPU5. 加载没有预训练权重的ResNet模型6. 创建Tkinter窗口:7.定义选择图片的函数:8.定义预测图片的函数:9.退出程序的函数:10.创建按钮:11.运行Tkinter事件循环:12. 完整代码&#xf…

基于YOLOv5+pyqt5的口罩佩戴检测系统(PyQT页面+YOLOv5模型+数据集)

简介 在各种工作环境和公共场所,确保人们正确佩戴口罩对个人防护和公共卫生至关重要,尤其是在医疗设施、制造业车间和拥挤的公共交通中。为了满足这一需求,我们开发了一种基于YOLOv5目标检测模型的口罩佩戴检测系统。本项目不仅实现了高精度的口罩佩戴检测,还设计了一个可…

第四天 怎么又迟到了呀 哎啥时候来准时上个课呀

泛型编程 Traits实现&#xff0c;是什么 泛型编程&#xff08;Generic Programming&#xff09;是一种通过编写与特定类型无关的代码来实现代码复用和抽象的编程范式。 在C中&#xff0c;模板&#xff08;Templates&#xff09;是实现泛型编程的主要手段。 Traits&#xff0…

reactjs18 中使用@reduxjs/toolkit同步异步数据的使用

react18 中使用@reduxjs/toolkit 1.安装依赖包 yarn add @reduxjs/toolkit react-redux2.创建 store 根目录下面创建 store 文件夹,然后创建 index.js 文件。 import {configureStore } from "@reduxjs/toolkit"; import {counterReducer } from "./feature…

CS-隐藏防朔源-数据转发-iptables(Linux自带的防火墙)

免责声明:本文仅做技术交流与学习... 目录 准备环境: 1-iptables转发机设置转发: 2-CS服务器配置iptables服务器的IP 准备环境: 两台外网服务器. --iptables服务器就是做一个中转...封了中转就没了... 1-iptables转发机设置转发: iptables -I INPUT -p tcp -m tcp --dport 8…

Python 基础:使用 unittest 模块进行代码测试

目录 一、测试函数2.1 通过案例2.2 不通过案例2.3 添加新测试 二、测试类2.1 单个测试案例2.2 多个测试案例 三、总结 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 本文参考&#xff1a;《Python编程&#xff1a;…

外贸SEO工具有哪些推荐?

"我们作为一个专业的Google SEO团队&#xff0c;比较推荐一下几个适合外贸SEO的工具。Ahrefs 是一个非常强大的工具&#xff0c;可以帮助你深入分析竞争对手的表现&#xff0c;找到有潜力的关键词&#xff0c;还可以监控你的网站链接状况。另外&#xff0c;SEMrush 也很不…

conda下安装32位版本python

前言&#xff1a;当前主流的系统为64bit系统&#xff0c;conda软件为64bit软件&#xff0c;因此使用conda创建虚拟环境安装python时默认安装的python为64bit版本&#xff0c;但部分研发场景需要调用32bit依赖&#xff0c;只能使用32bit的python&#xff0c;因此需要安装32bit的…

python OpenCV 库中的 cv2.Canny() 函数来对图像进行边缘检测,并显示检测到的边缘特征

import cv2# 加载图像 image cv2.imread(4.png)# 使用 Canny 边缘检测算法提取边缘特征 edges cv2.Canny(image, 100, 200)# 显示边缘特征 cv2.imshow(Edges, edges) cv2.waitKey(0) cv2.destroyAllWindows() 代码解析&#xff1a; 导入 OpenCV 库&#xff1a; import cv2加…

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

JavaScript中的Date对象,以及常用格式化日期的方法封装

一、Date对象 二、操作Date对象 1、创建Date对象 &#xff08;1&#xff09;常用方法 &#xff08;2&#xff09;使用示例 2、获取日期 &#xff08;1&#xff09;常用方法 &#xff08;2&#xff09;使用示例 3、设置日期 &#xff08;1&#xff09;常用方法 &…

【LeetCode】六、哈希集合Set相关:存在重复元素判断 + MyHashSet设计

文章目录 1、Set集合2、Java中的Set集合3、leetcode217&#xff1a;存在重复元素4、P705&#xff1a;设计哈希集合 1、Set集合 无序&#xff1a;写进去的顺序和遍历读出来的顺序不一样不重复 主要作用&#xff1a;查看是否有重复元素&#xff08;给一个数组&#xff0c;转为…

信息技术课如何禁止学生玩游戏

在信息技术课上禁止学生玩游戏是一个常见的挑战&#xff0c;但可以通过一系列策略和工具来有效地实现。以下是一些建议&#xff1a; 明确课堂规则和纪律&#xff1a; (1)在课程开始时&#xff0c;明确告知学生课堂规则和纪律&#xff0c;包括禁止玩游戏的规定。 (2)强调遵守…

C#——this关键字详情

this关键字 在 C# 中&#xff0c;可以使用 this 关键字来表示当前对象&#xff0c;日常开发中我们可以使用 this 关键字来访问类中的成员属性以及函数。 使用this表示当前类的对象 执行结果 使用 this 关键字串联构造函数 执行结果 使用 this 关键字作为类的索引器 执行结果 …

diffusion model(十八):diffusion model中negative prompt的工作机制

info个人博客主页http://myhz0606.com/article/ncsn 前置阅读&#xff1a; DDPM&#xff1a; http://myhz0606.com/article/ddpm classifier-guided&#xff1a;http://myhz0606.com/article/guided classifier-free guided&#xff1a;http://myhz0606.com/article/classi…

用Roofline模型去分析pytorch和Triton算子

用Roofline模型去分析pytorch和Triton算子 1.参考链接2.测试环境3.安装相关依赖4.锁频5.获取理论算力6.创建测试脚本7.运行测试程序生成Roofline图8.NVIDIA Nsight Compute生成Roofline9.效果图A.nn.LinearB.Triton实现 本文演示了如何用Roofline模型去分析pytorch和Triton算子…

Vue2 - 项目上线后生产环境中去除console.log的输出以及断点的解决方案

前言 当你准备将Vue.js应用程序部署到生产环境时,一个关键的优化步骤是移除代码中的所有 console.log 语句以及断点。在开发阶段,console.log 是一个非常有用的调试工具,但在生产环境中保留它们可能会影响性能和安全性。在本文中,我将向你展示如何通过使用Vue CLI 2来自动…

【LLVM】学习使用PGO优化

笔者在查看PGO优化时看到了本站的这篇文章&#xff0c;其中代码和命令行部分贴上了序号&#xff0c;且命令行带上了$符号&#xff0c;不便于读者调试。 遂将代码重新整理到gitee&#xff0c;链接在此。 汇编代码分析 目前笔者使用的llvm版本为llvm-19&#xff0c;主要改动发生…

Postgresql从小白到高手 九 : psql高级查询及内部视图使用

Postgresql从小白到高手 九:pgsql 复杂查询及内部表高级查询 文章目录 Postgresql从小白到高手 九:pgsql 复杂查询及内部表高级查询一、多表查询二、pgsql内部表1.内部表2.内部表查询应用 一、多表查询 内联 &#xff1a;inner join on 简写 join on 结果集只有符合 筛选条件…

【Golang】Steam 创意工坊 Mod 文件夹批量重命名

本文将介绍一个使用Go语言编写的脚本&#xff0c;其主要功能是解析XML文件并基于解析结果重命名文件夹。这个脚本适用于需要对文件夹进行批量重命名&#xff0c;并且重命名规则依赖于XML文件内容的情况。 脚本功能概述 Steam创意工坊下载的Mod文件夹批量重命名为id名称 运行前…