在vue中使用wangEditor上传视频

一、效果展示

实现效果
实现效果

原本效果
原本效果

二、修改wangEditor源码

  1. 添加插入视频panel

只修改Video.prototype._createPanel方法

// 原型
Video.prototype = {
   
	_createPanel: function _createPanel() {
   
	    var _this = this;
	    var editor = this.editor;
	    var uploadImg = editor.uploadImg;
	    var config = editor.config;
	
	    // 创建 id
	    // 上传视频id
	    var upTriggerVideoId = getRandom('up-trigger-video');
	    var upFileVideoId = getRandom('up-file-video');
	    // 插入视频id
	    var textValId = getRandom('text-val');
	    var btnId = getRandom('btn');
	
	    // tabs 的配置
	    var tabsConfig = [
	        {
   
	            title: '上传视频或pdf',
	            tpl: '<div class="w-e-up-img-container"><div id="' + upTriggerVideoId + '" class="w-e-up-btn"><i class="w-e-icon-upload2"></i></div><div style="display:none;"><input id="' + upFileVideoId + '" type="file" multiple="multiple" accept="application/pdf,video/*"/></div></div>',
	            events: [{
   
	                // 触发选择图片
	                selector: '#' + upTriggerVideoId,
	                type: 'click',
	                fn: function fn() {
   
	                    var $file = $('#' + upFileVideoId);
	                    var fileElem = $file[0];
	                    if (fileElem) {
   
	                        fileElem.click();
	                    } else {
   
	                        // 返回 true 可关闭 panel
	                        return true;
	                    }
	                }
	            }, {
   
	                // 选择图片完毕
	                selector: '#' + upFileVideoId,
	                type: 'change',
	                fn: function fn() {
   
	                    var $file = $('#' + upFileVideoId);
	                    var fileElem = $file[0];
	                    if (!fileElem) {
   
	                        // 返回 true 可关闭 panel
	                        return true;
	                    }
	
	                    // 获取选中的 file 对象列表
	                    var fileList = fileElem.files;
	                    if (fileList.length) {
   
	                        console.log(fileList);
	                        uploadImg.uploadVideo(fileList);
	                    }
	
	                    // 返回 true 可关闭 panel
	                    return true;
	                }
	            }]
	        }, // first tab end
	        {
   
	            // 标题
	            title: '网络视频',
	            // 模板
	            tpl: '<div><input id="' + textValId + '" type="text" class="block" placeholder="\u683C\u5F0F\u5982\uFF1A<iframe src=... ></iframe>"/><div class="w-e-button-container"><button id="' + btnId + '" class="right">\u63D2\u5165</button></div></div>',
	            // 事件绑定
	            events: [{
   
	                selector: '#' + btnId,
	                type: 'click',
	                fn: function fn() {
   
	                    var $text = $('#' + textValId);
	                    var val = $text.val().trim();
	
	                    if (val) _this._insert(val); // 插入视频
	
	                    // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
	                    return true;
	                }
	            }]
	        } // second tab end
	    ]; // tabs end
	
	    // 判断 tabs 的显示
	    var tabsConfigResult = [];
	    if (config.uploadVideoServer) {
   
	        // 显示“上传视频”
	        tabsConfigResult.push(tabsConfig[0]);
	    }
	    if (config.showLinkVideo) {
   
	        // 显示“网络视频”
	        tabsConfigResult.push(tabsConfig[1]);
	    }
	
	    // 创建 panel
	    var panel = new Panel(this, {
   
	        width: 350,
	        // 一个 panel 多个 tab
	        tabs: tabsConfigResult // tabs end
	    }); // panel end
	
	    // 显示 panel
	    panel.show();
	
	    // 记录属性
	    this.panel = panel;
	},
	// 插入视频
    _insert: function _insert(val) {
   
      var editor = this.editor;
      editor.cmd.do('insertHTML', val + '<p><br></p>');
    
Vue3 使用 Wangeditor(一个基于 Web 的富文本编辑器)集成音频上传功能,通常需要以下几个步骤: 1. **安装依赖**: 首先,在项目安装 Wangeditor上传组件,比如使用 Element Plus 或者其他的第三方插件。可以使用 `npm` 或者 `yarn` 进行安装: ``` npm install @wangeditor/editor element-plus el-upload // 或者 yarn add @wangeditor/editor element-plus el-upload ``` 2. **配置编辑器**: 在 Vue 组件初始化 Wangeditor,并配置音频上传相关的选项。例如: ```html <template> <el-editor :ref="editorRef" v-model="content" :config="editorConfig"> <!-- ... --> </el-editor> </template> <script> import { ref } from 'vue'; import Editor from '@wangeditor/editor'; import ElUpload from 'element-plus/upload'; export default { setup() { const editorRef = ref(null); const content = ref(''); const editorConfig = { // ... 其他配置 upload: { action: '/api/upload', // 服务器接收文件的 URL onDrop(file) { // 当用户拖拽文件到富文本编辑器区域时触发 uploadFile(file); }, onRemove(file) { // 删除已上传文件 } } }; async function uploadFile(file) { await new Promise((resolve, reject) => { const formData = new FormData(); formData.append('file', file); axios.post(editorConfig.upload.action, formData).then(response => { if (response.data.success) { // 更新内容包含的音频链接 content.value = content.value.replace(/\{\{audio\}\}/, response.data.url); resolve(); } else { reject(response.data.message); } }).catch(reject); }); } return { editorRef, content, editorConfig, }; } }; </script> ``` 3. **处理上传事件**: 在 `upload` 对象的配置,你可以定义上传文件的回调函数,如上所示,通过axios或其他HTTP库将文件发送到服务器,并在响应成功后更新编辑器内容插入的音频URL。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值