百度编辑器上传视频以及视频编辑器预览bug解决

百度编辑器目前来讲是运用比较广泛的一个编辑器了,不仅开源还有中文的文档,所以很受欢迎,不过里面也有许多地方需要开发人员自己调试,其中一个比较常见的问题就是上传视频了,上传视频本身有一些小bug,这个基本最大的体现就是编辑器内无法预览上传的视频问题。

我搜集了网上的解决方案,发现基本都一样,大多数都是复制黏贴的答案,虽说一定程度解决了编辑器上传不显示的问题,但却造成了新的bug,例如上传视频框无法关闭,还有只要等切换源码模式再返回来又看不到预览的视频了等。

所以最后还是自己动手丰衣足食,最后终于找到了完美解决方案,在找问题的过程也发现其实百度编辑器虽然留下了bug,但这些bug完全是在预期内的,也就是给了你解决的途径,只需要能理解他们的代码根据他们的思路来就可以改成你想要的样子,关键还是理解他们的开发思路,想必这对专业的前端肯定是很简单的,奈何我并不是专业的前端,所以还是花了点时间,下面来看解决方案和bug本身的问题。

先来看具体的bug情况:

在插入视频里放入地址后,正常显示在插入视频里,这个时候是正常的

但插入后会显示下图,视频没有正常的预览,这是因为设置插入编辑器里的不是视频的代码,而是image图片的代码

这个时候如果进入源码看的话,会发现里面是空的,根本什么都没有

在进入编辑器的预览会发现之前的图片都消失了

出现这种情况是由于编辑器没有开放视频插入的代码的白名单,所以会被过xss滤掉

解决方案:

首先在ueditor.config.js文件里增加xss过滤白名单:

在这里的末尾加上下列在插入视频中使用的代码:

source: [‘src‘, ‘type‘],
embed: [‘type‘, ‘class‘, ‘pluginspage‘, ‘src‘, ‘width‘, ‘height‘, ‘align‘, ‘style‘, ‘wmode‘, ‘play‘,‘autoplay‘,‘loop‘, ‘menu‘, ‘allowscriptaccess‘, ‘allowfullscreen‘, ‘controls‘, ‘preload‘],
iframe: [‘src‘, ‘class‘, ‘height‘, ‘width‘, ‘max-width‘, ‘max-height‘, ‘align‘, ‘frameborder‘, ‘allowfullscreen‘]  

另外由于插入的代码不是视频,那么首先要找到插入编辑器代码的代码,位置在ueditor.all.js里,如果引用的是uedior.min.js就需要在这里找,找到以下代码:

改完这里后会发现插入视频地址后,虽然编辑器可以看到视频了,但是插入视频的窗口不能关闭了

之所以会出现这个问题是因为改动embed后,下面红框的代码无法正常找到image标签及其里面的属性导致的,这里只要注释红框的内容就可以解决插入视频框无法自动关闭的问题。

接着往下看,除开这个bug外,还有新的问题,下面我们来看看点击源码再回到编辑器预览里会发生什么。

从上面的图上可以看出,去源码里已经视频代码不会被过滤了,但是回到编辑器却是一片空白,这是怎么回事呢?

问题出在红框里的这段代码里:type="application/x-shockwave-flash" class="edui-faked-video" pluginspage="http://www.macromedia.com/go/getflashplayer"

type规定了flash格式,我插入的是flash所以没问题,pluginspage是提供用户flash下载地址的(有些用户没有安装flash插件或者没有及时更新),那么问题是在class里了,因为ediu-faked-video会告诉编辑器这不是一个视频,因此会删除embed里的src的链接,因此回到编辑器预览会出现白板。

网上其他的答案是把ediu-faked-video改成ediu-video,但我不建议,因为只能解决部分问题而已,还有其他的bug,例如如果上传的视频是mp4格式怎么办,另外改动的地方不止样一处,还是有问题,因此我建议改动ueditor.all.js里的下图红框部分:

这里是判断如果点击视频上传需要导入的是embed代码的情况,之前是image,我们改成了embed,因此这里switch得到的是embed的代码模板,在这里我们去掉

[html] view plain copy

  1. type="application/x-shockwave-flash" class="‘ + classname + ‘" pluginspage="http://www.macromedia.com/go/getflashplayer"‘ +‘

更改好后,刷新一下,我们再来看看插入视频后进入源码然后再回到编辑器预览状态下已经没有问题了,可以正常预览,红框里的代码的src内容已经不会被过滤了:

另外上传视频也可以正常运作,如果是按照网上改edui-faked那种,这里如果传的是MP4等其他格式的就会出问题。

时间: 2024-10-03 20:35:01

百度编辑器上传视频以及视频编辑器预览bug解决的相关文章

jQuery图片上传前先在本地预览(不经过后端处理)

前段时间遇到一个问题,前端想实现图片上传预览(不经过后端PHP或JAVA处理),用户点击file按钮上传文件,点击确定马上就能看到预览的效果,但在实现的时候无论怎样都取不到file上图片的真实路径,得到的反而是C:\fakepath\a.jpg,这个路径是错误的.百度之后得到说浏览器基于保护用户的相关安全措施,隐藏了上传的真实路径,用fakepath代替,当然,调整浏览器的相关安全设置可以解决这个问题.但我们不可能让所有用户都通过设置浏览器的安全设置来进行图片上传,这种方法在网络交互上显然不现实

mvc文件上传支持批量上传,拖拽以及预览,文件内容校验等

使用bootstrap-fileinput 使用方式: 1.nuget:Install-Package bootstrap-fileinput 2.语言本地化{下载fileinput_locale_zh.js}或者修改Fileinput中的本地化词汇 3.文件大小限制:修改fileinput.js中的3195行 maxFilePreviewSize配置节点 示例:前台 @{ Layout = null; } <!DOCTYPE html> <html> <head> &

jQuery图片上传前先在本地预览

/**名称:图片上传本地预览插件 v1.1*作者:周祥*时间:2013年11月26日*介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari*插件网站:http://keleyi.com/keleyi/phtml/image/16.htm*参数说明: Img:图片ID;Width:预览宽度;Height:预览高度;ImgType:支持文件类型;Callback:选择文件显示图片后回调方法;*使用方法: <div><img id="I

关于js上传文件的校验以及预览

花了一上午的时间理了下思路,整理了下上传方面的问题.主要是关于格式的校验以及大小和数量的校验,可能有部分缺失,望大家提出,及时修正. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>文件上传测试</title> <style

上传多张照片并实现预览过程

function selectImage(imgFile){ //上传的多张图片 var allFiles = imgFile.files; var imgArr = []; for(var i=0;i<allFiles.length;i++){ var file = allFiles[i]; //添加一层过滤 var rFilter = /^(image\/bmp|image\/gif|image\/jpeg|image\/png|image\/tiff)$/i; if(!rFilter.te

input上传mp3格式文件,预览并且获取时间

<input type="file" id="file" name="file" class="upfile" onchange="fileupload(this)"/> <audio id="audio" controls="" style="display: none;"></audio> //附件展示 $(

java文件上传、下载、图片预览

多文件保存到本地: @ResponseBody    @RequestMapping(value = "/uploadApp",produces = { "application/json;charset=UTF-8" },method= RequestMethod.POST)    public String uploadApp( HttpServletRequest request,@RequestParam("file") Multipar

百度编辑器上传文件的bug

在用百度编辑器上传文件过程中出现问题1: 原因是POST 请求 body 的大小超过了被限制的大小,在php.ini做如下修改(将post_max_size大小改为大于你要上传的文件的大小)即可: 出现问题2: 原因是 用户上传单文件的大小超过了被限制的大小 在php.ini做如下修改(将post_max_size大小改为大于你要上传的文件的大小)即可: 原文地址:https://blog.51cto.com/13550695/2412084

Kindeditor编辑器上传附件,自动获取文件名显示。

大部分在线编辑器在上传附件之后都是会以路径的形式显示出来很不友好.类似这样..怎么样显示成这样用户上传的原始文件名呢.就是这样.是不是看着很友好. kindeditor编辑器上传文件是已插件的形式调用的,包括其他类似的功能(批量上传图片,百度地图)都是在plugins目录下.打开insertfile目录下的insertfile.js文件.在文件上传之后的回调函数里面找到urlBox.val(url);在下面添加一行titleBox.val(data.title);这里会把后台上传文件之后返回的j