基于layui社区模板编辑器,增加视频音频上传功能发布

本文介绍如何在layui富文本编辑器中增加视频和音频插入功能,并提供具体实现步骤与代码示例。
此功能 展示 请查看  http://fly.layui.com/jie/8077.html  

具体实现代码如下:
1、查找官方 demo/res/mods/index.js 

超找代码
<span type="code" title="插入代码"><i class="iconfont icon-daima"></i>代码</span>
下面插入
 +'<span type="video" title="视频"><i class="layui-icon"></i>视频</span>'
 +'<span type="audio" title="音频"><i class="layui-icon"></i>音频</span>'
 

查找代码

,yulan: function(editor){ //预览


上面添加以下代码;
,video: function(editor){ //插入视频
          layer.open({
            type: 1
            ,id: 'fly-jie-video-upload'
            ,title: '插入视频'
            ,shade: false
            ,area: '465px'
            ,skin: 'layui-layer-border'
            ,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
              ,'<li class="layui-form-item">'
              ,'<label class="layui-form-label">封面</label>'
              ,'<div class="layui-input-inline">'
              ,'<input type="text" required name="cover" placeholder="支持直接粘贴远程图片地址" value="" class="layui-input">'
              ,'</div>'
              ,'<input required type="file" name="file" lay-type="image" class="layui-upload-file" value="">'
              ,'</li>'
              ,'<li class="layui-form-item">'
              ,'<label class="layui-form-label">URL</label>'
              ,'<div class="layui-input-inline">'
              ,'<input type="text" required name="video" placeholder="支持直接粘贴远程视频地址" value="" class="layui-input">'
              ,'</div>'
              ,'<input required type="file" name="file" lay-type="video" class="layui-upload-file" value="">'
              ,'</li>'
              ,'<li class="layui-form-item" style="text-align: center;">'
              ,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>'
              ,'</li>'
              ,'</ul>'].join('')
            ,success: function(layero, index){
              var loding, video =  layero.find('input[name="video"]'), cover =  layero.find('input[name="cover"]');
              layui.upload({
                url: '/Ajax/ThreadUpload/'
                ,before: function(input){   loding = layer.msg('文件上传中,请稍等哦', { icon: 16 ,shade:0.3,time:0 });   }
                ,elem: '#fly-jie-video-upload .layui-upload-file'
                ,success: function(res,input){
                  layer.close(loding);
                  if(res.status == 1){
                      if($(input).attr('lay-type') == 'image'){
                          cover.val(res.data);
                      }else{
                          video.val(res.data);
                      }
                  } else {
                    layer.msg(res.msg, {icon: 5});
                  }
                }
              });
              form.on('submit(uploadImages)', function(data){
                var field = data.field;
                if(!field.video) return video.focus();
                layui.focusInsert(editor[0], 'video('+field.cover+')['+ field.video + '] ');
                layer.close(index);
              });
            }
          });
        }
        ,audio: function(editor){ //插入音频
          layer.open({
            type: 1
            ,id: 'fly-jie-audio-upload'
            ,title: '插入音频'
            ,shade: false
            ,area: '465px'
            ,skin: 'layui-layer-border'
            ,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
              ,'<li class="layui-form-item">'
              ,'<label class="layui-form-label">URL</label>'
              ,'<div class="layui-input-inline">'
              ,'<input required name="audio" placeholder="支持直接粘贴远程音频地址" value="" class="layui-input">'
              ,'</div>'
              ,'<input required type="file" name="file" lay-type="audio" class="layui-upload-file" value="">'
              ,'</li>'
              ,'<li class="layui-form-item" style="text-align: center;">'
              ,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>'
              ,'</li>'
              ,'</ul>'].join('')
            ,success: function(layero, index){
              var loding,image =  layero.find('input[name="audio"]');

              layui.upload({
                url: '/Ajax/ThreadUpload/',elem: '#fly-jie-audio-upload .layui-upload-file'
                ,before: function(input){   loding = layer.msg('文件上传中,请稍等哦', { icon: 16 ,shade:0.3,time:0 });   }
                ,success: function(res){
                  layer.close(loding);
                  if(res.status == 1){
                    image.val(res.data);
                  } else {
                    layer.msg(res.msg, {icon: 5});
                  }
                }
              });
              form.on('submit(uploadImages)', function(data){
                var field = data.field;
                if(!field.audio) return image.focus();
                layui.focusInsert(editor[0], 'audio['+ field.audio + '] ');
                layer.close(index);
              });
            }
          });
        }
其中 /Ajax/ThreadUpload/ 为上传地址,后台接受自己去处理保存图片;

下面开始处理内容转移工作;
查找
 
注意以上图片 我是增加了几个回车,注意分割的时候的 .replace 前面回车, 注意前面的 点 ;
在回车出添加以下代码:
 .replace(/video\(.*?\)\[([^\s]+?)\]/g, function(str){
              var cover = (str.match(/video\(([\s\S]+?)\)\[/)||[])[1];
              var video = (str.match(/\)\[([^\s]+?)\]/)||[])[1];
              cover = cover ? cover : '/Public/Topic/images/video_cover.jpg';
              return  '<video poster="'+ cover + '" controls crossorigin><source src="'+ video + '" type="video/mp4"></video>';
          })
          .replace(/audio\[([^\s]+?)\]/g, function(audio){
            return  '<audio controls><source src="'+ audio.replace(/(^audio\[)|(\]$)/g, '')+ '" type="audio/mp3"></audio>';
          })
查找
//加载编辑器
  gather.layEditor({
    elem: '.fly-editor'
  });
下面添加

  layui.use('plyr', function(plyr){
    plyr.setup();
  });
在有编辑器的页面 头部 引入 css 样式文件;
 


另外付一个 附件 请自行去我百度云盘系在(css 和 js) ;
链接:http://pan.baidu.com/s/1jHGqHDk 密码:sfdw

js 文件放入 demo/res/mods 中;与 index.js 同级目录;

css 文件放入 demo/res/css 中 html 头部 引入即可;



技术帮助:



帮我写一个后台管理系统,采用bootstarp.css,layui.js,jqeury.js等技术要求简洁美观高级,主要模块是这样 |---------- 后台管理系统首页 --------| ------AI 助手管理系统 --------- |---------- 知识库管理 ----------| |-------------- 多模态知识库(文本 / 图像 / 音频知识条目管理)| |-------------- 知识图谱维护(实体关系自动构建与校验)| |-------------- 智能更新引擎(AI 自动抓取全网知识并预处理)| |---------- 交互功能管理 --------| |-------------- 对话场景配置(博客写作辅助 / 学习答疑 / 创意生成等场景模板)| |-------------- 多模态交互设置(语音合成风格 / 图像生成参数调节)| |-------------- 隐私安全管控(用户数据脱敏规则 / 交互记录留存周期)| |---------- 能力拓展中心 --------| |-------------- 插件市场管理(第三方 AI 工具集成权限)| |-------------- 模型训练控制台(用户反馈数据标注 / 微调任务调度)| |-------------- 算力资源分配(AI 处理任务优先级设置)| ------ 短视频社区管理系统 ------- |---------- 内容生态管理 --------| |-------------- 多模态内容审核(AI 识别违规内容 / 深度伪造视频检测)| |-------------- 创作者成长体系(粉丝画像分析 / 内容收益结算)| |-------------- 虚拟内容管理(数字人视频 / VR 全景视频发布权限)| |---------- 社交互动管理 --------| |-------------- 实时互动监控(弹幕关键词过滤 / AR 特效使用统计)| |-------------- 社群关系维护(兴趣标签自动聚类 / 社群活跃度分析)| |-------------- 虚拟礼物体系(数字藏品礼物发行 / 兑换规则)| |---------- 流量运营中心 --------| |-------------- 智能推荐引擎(算法参数调优 / 冷启动策略配置)| |-------------- 时空流量分析(24 小时用户活跃热力图 / 地域传播路径)| |-------------- 跨平台分发管理(第三方平台同步发布权限)| ------ 在线视频学习平台管理 ----- |---------- 课程资源管理 --------| |-------------- 智能课程生成(AI 自动剪辑 / 多语言字幕生成)| |-------------- 知识图谱课程(知识点关联路径可视化配置)| |-------------- 虚实融合课程(VR 实践课 / 元宇宙课堂场景管理)| |---------- 学习行为管理 --------| |-------------- 个性化学习路径(AI 推荐学习计划 / 薄弱点强化方案)| |-------------- 多模态学习数据(视频观看 / 互动练习 / 语音问答数据)| |-------------- 学习效果评估(技能等级自动测评 / 证书区块链存证)| |---------- 商业运营管理 --------| |-------------- 订阅体系管理(AI 动态定价 / 会员权益配置)| |-------------- 学习社群运营(小组协作任务 / 导师资源分配)| |-------------- 知识付费工具(内容分销佣金 / 二次创作授权)| 注意:每一个页面都可能通过iframe嵌入,因此你只需要在后台管理系统首页中点击每个模块在页面中央显示嵌入页面的路径即可,后续我来创建和实现,注意左侧菜单的渲染后续通过promise动态权限渲染,因此你需要预留暂时写一个假数据,开始吧,还有就是你通过分析当今知识走向,说一说我的子模块和父模块都有什么功能,列一个功能清单和实现方式,左侧菜单可以收起来和展开,两个父级模块可以同时展开和收起来,小细节注意一下谢谢了
最新发布
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值