wangEditor富文本编辑器的调用开发实录(v5版本、多个编辑器、php后端上传视频阿里云OSS、编辑HTML回显)

  1. wangEditor富文本编辑器的调用开发实录(v5版本、获取HTML内容、上传图片、隐藏上传视频)
  2. wangEditor富文本编辑器的调用开发实录2(V5版本自定义粘贴,去除复制word或网页html冗余样式代码的解决方案)

wangEditor富文本编辑器的调用开发实录

  • 一、多个编辑器
    • 1.构建HTML容器
    • 2.创建编辑器和工具栏
  • 二、编辑内容时编辑器回显HTML
    • 1.创建textarea隐藏表单,用于储存从数据库读取过来的HTML数据,而不是直接将HTML置入js代码中
    • 2.js获取HTML数据
  • 三、上传视频阿里云OSS
    • 1.配置上传图片和视频菜单
    • 2.配置后端视频处理模式

一、多个编辑器

1.构建HTML容器

<div class="layui-form-item"><label for="editor-toolbar-1" class="layui-form-label">主观资料 <span class="x-red">* </span></label><div class="layui-input-block"><div class="editor-border"><div id="editor-toolbar-1"><!-- 工具栏 --></div><div id="editor-text-area-1" class="editor-height"><!-- 编辑器 --></div></div></div></div><div class="layui-form-item"><label for="editor-toolbar-1" class="layui-form-label">客观资料 <span class="x-red">* </span></label><div class="layui-input-block"><div class="editor-border"><div id="editor-toolbar-2"><!-- 工具栏 --></div><div id="editor-text-area-2" class="editor-height"><!-- 编辑器 --></div></div></div></div>

2.创建编辑器和工具栏

 const E = window.wangEditor//主观资料const editor1 = E.createEditor({selector: '#editor-text-area-1',config: {placeholder: '<p><strong>二、主观性资料S</strong><br>包括患者的主诉、现病史、既往史、个人史、家族史等。(可粘贴图片,或上传视频)</p>',autoFocus: false,onChange(editor) {//document.getElementById('content-view-1').innerHTML = editor.getHtml()}},html: ''})const toolbar1 = E.createToolbar({editor: editor1,selector: '#editor-toolbar-1',config: {},mode: 'default'})//客观资料const editor2 = E.createEditor({selector: '#editor-text-area-2',config: {placeholder: '<p><strong>三、客观性资料0</strong><br>包括患者的体格检查、实验室检查、影像学检查等。(可粘贴图片,或上传视频)</p>',autoFocus: false,onChange(editor) {//document.getElementById('content-view-1').innerHTML = editor.getHtml()}},html: ''})const toolbar2 = E.createToolbar({editor: editor2,selector: '#editor-toolbar-2',config: {},mode: 'default'})

二、编辑内容时编辑器回显HTML

1.创建textarea隐藏表单,用于储存从数据库读取过来的HTML数据,而不是直接将HTML置入js代码中

 <div class="layui-form-item"><label for="editor-toolbar-1" class="layui-form-label">主观资料 <span class="x-red">* </span></label><div class="layui-input-block"><div class="editor-border"><div id="editor-toolbar-1"><!-- 工具栏 --></div><div id="editor-text-area-1" class="editor-height"><!-- 编辑器 --></div></div><textarea name="forum_subjective" id="forum_subjective" style="display: none;"><p><strong>二、主观性资料S</strong><br>包括患者的主诉、现病史、既往史、个人史、家族史等。(可粘贴图片,或上传视频)</p></textarea></div></div>

2.js获取HTML数据

使用

onCreated(editor) {editor.setHtml(forum_subjective)}

回显数据。

    var forum_subjective = $("#forum_subjective").val();//主观资料const editor1 = E.createEditor({selector: '#editor-text-area-1',config: {placeholder: 'Type here...',autoFocus: false,onCreated(editor) {editor.setHtml(forum_subjective)},onChange(editor) {//document.getElementById('content-view-1').innerHTML = editor.getHtml()}},html: ''})

三、上传视频阿里云OSS

1.配置上传图片和视频菜单

 const editor1 = E.createEditor({selector: '#editor-text-area-1',config: {placeholder: 'Type here...',autoFocus: false,MENU_CONF: {uploadImage: {fieldName: 'file',//后台获取文件方式;server: '?m=Upload&a=uploadDeal&act=wangEditor&fromType=forum&token=' + token,maxFileSize: 1 * 1024 * 1024, // 1MallowedFileTypes: ['image/*'],onFailed(file, res) {layer.msg(res.message);},onError(file, err, res) {layer.msg(file.name + err);}},uploadVideo: {fieldName: 'file',//后台获取文件方式;server: '?m=Upload&a=uploadDeal&act=wangVideo&fromType=forum&token=' + token,maxFileSize: 100 * 1024 * 1024, // 100MmaxNumberOfFiles: 1,allowedFileTypes: ['video/*'],timeout: 300 * 1000, // 过期时间,单位:秒onBeforeUpload(file) {layer.msg('视频文件较大时,上传后耐心等待视频回显。');},onSuccess(file, res) {layer.msg(`${file.name}`+ res.message)},onFailed(file, res) {layer.msg(res.message +'-'+ res);},onError(file, err, res) {layer.msg(file.name + err + res);}}},onCreated(editor) {editor.setHtml(forum_subjective)},onChange(editor) {//document.getElementById('content-view-1').innerHTML = editor.getHtml()}},html: ''})const toolbar1 = E.createToolbar({editor: editor1,selector: '#editor-toolbar-1',config: {},mode: 'default'})

2.配置后端视频处理模式

 /*上传视频*/case "wangVideo";$fromType = get_param('fromType');$token = get_param('token');$user_id = AuthCode($_COOKIE["db_user_id"], "DECODE", "LOCKDATAV", "") . "_user";//上传信息;$file = $_FILES['file'];$uploaded_type = $file['type'];$uploaded_tmp = $file['tmp_name'];$uploaded_ext = substr($file['name'], strrpos($file['name'], '.') + 1);$fileName = $user_id . "_" . md5(time()) . "." . $uploaded_ext;//01.获取验证tokenif ($token != $_SESSION['upToken'] || $token == "") {$res['errno'] = 1;$res['message'] = "非法传参页面,请刷新重新上传" . $token;session_destroy(); //验证码自动销毁;die(json_encode_lockdata($res));}//04.判断文件大小1Mif ($file["size"] > 100 * 1024 * 1024) {$res['code'] = 1;$res['message'] = "文件大小不能超过100M";die(json_encode_lockdata($res));}//05-执行上传;//阿里云OSSif ($CONF['uploadType'] == 1) {$accessKeyId = $CONF['accessKeyId'];$accessKeySecret = $CONF['accessKeySecret'];$endpoint = $CONF['endpoint'];$bucket = $CONF['bucket'];$object = "tslf/" . $fileName;//目标上传路径,Object完整路径中不能包含Bucket名称$filePath = $uploaded_tmp;//"upload/1.mp4";//指定本地路径try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$row = $ossClient->uploadFile($bucket, $object, $filePath);//返回JSON;$res['errno'] = 0;$res['data']['url'] = $row['info']['url'];//视频地址$res['data']['poster'] = "";//封面图片$res['message'] = '上传成功!';die(json_encode_lockdata($res));} catch (OssException $e) {$res['errno'] = 1;$res['message'] = $e->getMessage();die(json_encode_lockdata($res));}}//本地服务器if ($CONF['uploadType'] == 0) {//创建目录;$upload_dir = 'upload';$imgUrl = $upload_dir . '/' . $fromType;if (!is_dir($upload_dir)) {mkdir($upload_dir);}if (!is_dir($imgUrl)) {mkdir($imgUrl);}move_uploaded_file($file['tmp_name'], $imgUrl . "/" . $fileName);$safe_img = $imgUrl . "/" . $fileName;//返回JSON;$res['errno'] = 0;$res['data']['url'] = $CONF['url'] . $safe_img;//视频地址$res['data']['poster'] = "";//封面图片$res['message'] = '上传成功!';die(json_encode_lockdata($res));}break;

@漏刻有时

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

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

相关文章

张艺兴step新专开启自由驾驶新纪元

张艺兴《Step》新专&#xff0c;开启自由驾驶新纪元&#xff01;当音乐与驾驶相遇&#xff0c;会碰撞出怎样的火花&#xff1f;当实力派艺人张艺兴遇上全新英文专辑《Step》&#xff0c;便为我们解锁了一种前所未有的出行体验&#xff01;这不仅仅是一张音乐专辑&#xff0c;更…

Pandas AI:最棒的大模型数据分析神器!

暑期实习基本结束了&#xff0c;校招即将开启。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友解惑答疑&…

MySQL中为什么要有隐式内连接和显式内连接

在MySQL多表联合查询中&#xff0c;区分隐式内连接&#xff08;Implicit Inner Join&#xff09;和显式内连接&#xff08;Explicit Inner Join&#xff09;的主要原因在于它们的语法风格、可读性、可维护性以及应用场景的差异。以下是对这两种连接方式的主要区别的详细分析&am…

Java Opencv识别图片上的虫子

最近有个需求&#xff0c;希望识别图片上的虫子&#xff0c;对于java来说&#xff0c;图像识别不是很好做。在网上也搜索了很多&#xff0c;很多的代码都是不完整&#xff0c;或者下载下载报错&#xff0c;有的写的很长看不懂。所以自己试着用java的opencv写了一段代码。发现识…

2024年计算机相关专业是否适合选择

2024年&#xff0c;计算机相关专业还值得选择吗&#xff1f; 随着2024年高考落幕&#xff0c;数百万高三学生又将面临人生中的重要抉择&#xff1a;选择大学专业。在这个关键节点&#xff0c;计算机相关专业是否仍是“万金油”的选择&#xff1f;在过去很长一段时间里&#xf…

Django+Vue.js怎么实现搜索功能

一.前言 类似这样的搜索功能 二.前端代码 <div class"form-container"><div class"form-group"><label for"departure-city">出发城市</label><select v-model"departureCity" id"departure-city&q…

把Vue项目从Window系统迁移到Mac系统的方案

不能启动vue ui 直接运行&#xff0c;会报错如下&#xff1a; failed to load config from /Users/xiaochen/IdeaProjects/ChatViewer-frontend/vite.config.tserror when starting dev server: Error: You installed esbuild for another platform than the one youre curre…

C++:STL容器-->set

使用set容器时需要导入头文件&#xff1a;#include <set> set和multiset区别&#xff1a; set不允许容器中有重复的元素 multiset允许容器中有重复的元素 1. 构造函数 set<T> st; set s(const &st); void printSet(set<int>& s) {for (set<int>…

程序性能优化——接口性能优化总结和思考

程序性能优化——接口性能优化总结和思考 一、背景介绍二、 思路方案三、过程四、总结五、升华 一、背景介绍 接口的优化 排查到的问题&#xff1a;循环中查询数据库&#xff0c;4300次查询数据库总共耗时在4分钟左右。 优化结果&#xff1a;4分钟到2秒 二、 思路方案 宏观的…

QT高阶-QSS样式表用法大全

文章目录 使用全局样式设置字体样式的作用域修改全局控件指示器的样式动态刷新控件的样式QSS样式的优先级调节控件的边框线QT6样式用法差异添加控件的背景图QSS注意事项Qt Style Sheet(QSS)是Qt的一种强大功能,类似于CSS用于网页设计。通过QSS,你可以定义Qt应用程序中的控件的…

RichSinkFunction 在 Flink IoT 项目中的应用实战

一、引言 随着物联网&#xff08;IoT&#xff09;技术的快速发展&#xff0c;实时数据处理和分析的需求日益增长。Apache Flink 作为一款高性能的流处理框架&#xff0c;广泛应用于 IoT 项目中。在 Flink 中&#xff0c;RichSinkFunction 是一种特殊的函数&#xff0c;它允许用…

嵌入式操作系统_5.存储管理

1.存储管理 存储管理是嵌入式操作系统的基本功能之一。其管理的对象是主存&#xff0c;也称内存。它的主要功能包括分配和回收主存空间、提高主存利用率、扩充主存、对主存信息实现有效保护。存储器管理的目的就是提供一个有价值的内存抽象&#xff0c;其目标包括&#xff1a;…

Integer溢出问题

0. 背景 在刷 LeetCode 时&#xff0c;代码的执行结果与预期出现了偏差&#xff0c;原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况&#xff0c;之前的认知是如果 Int 中存储的值超过了允许范围也许…

【FreeRTOS】ARM架构汇编实例

目录 ARM架构简明教程1. ARM架构电脑的组成1.2 RISC1.2 提出问题1.3 CPU内部寄存器1.4 汇编指令 2. C函数的反汇编 学习视频 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS&#xff08;FreeRTOS教程 基于STM32&#xff0c;以实际项目为导向&#xff09;】 https://www.…

Unity制作背包的格子

1.新建一个面板 2.点击面板并添加这个组件 3.点击UI创建一个原始图像&#xff0c;这样我们就会发现图像出现在了面板的左上角。 4.多复制几个并改变 Grid Layout Group的参数就可以实现下面的效果了

LeetCode题练习与总结:单词接龙--127

一、题目描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff0c;每个 si 都在 wordList 中。注意&am…

GraogGNSSLib学习

GraogGNSSLib学习 程序编译环境版本项目编译结果问题 程序编译 GraphGNSSLib 环境版本 程序开源是在ubuntu16.04-kinetic环境跑通的&#xff0c;但是我的环境是UBUNTU20.04&#xff0c;所以&#xff0c;先进行了ROS的安装&#xff0c;因为我的系统是ubuntu20.04所以&#xf…

如何优化Flask-Report报表的性能和加载速度

如何优化Flask-Report报表的性能和加载速度 在开发Web应用时&#xff0c;报表生成是一个常见的需求。Flask-Report是一个强大的Flask扩展&#xff0c;可以帮助我们快速生成PDF报表。然而&#xff0c;随着数据量的增加和复杂性的提高&#xff0c;报表的生成速度和性能可能会受到…

Linux--MQTT(一)简介

一、简介 MQTT &#xff08; Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输&#xff09;&#xff0c; 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议。 与 HTTP 协议一样&#xff0c; MQTT 协议也是应用层协议&#xff0c;工作在 TCP/IP 四…

k8s环境里查看containerd创建的容器对应的netns

如何查看containerd创建的容器对应的netns 要查看由 containerd 创建的容器对应的网络命名空间&#xff08;netns&#xff09;&#xff0c;你可以遵循以下步骤。这个过程涉及到了解容器的 ID&#xff0c;以及使用 ctr 命令或其他方式来检索容器的详细信息。这里假定你已经具备…