layui官方上传视频时并没直接提供获取视频时长的方法,需要我们间接获得
HTML增加一个<video>标签,因为video标签可以帮我们获取视频时长
<video id="videoattr" width="250" height="100" ></video>
当然,你也可以设置隐藏。
然后JS就可以利用<video>的duration来得到时长。
- choose:function(obj){
- //预读本地文件示例,不支持ie8
- layer.load(2);
- obj.preview(function(index, file, result){
- var url = URL.createObjectURL(file);//把file转成URL
- $('#videoattr').attr('src', url); //视频链接
- var timer = setTimeout(function(){
- layer.close(layer.index);
- $('#add').css("visibility","visible"); //一开始先将确认上传按钮隐藏,得到视频时长后才开放
- clearTimeout(timer);
- },1000);
-
- });
-
- },
一开始先将确认上传按钮隐藏,防止还没得到视频时长就已经开始上传导致参数错误等问题。
另外,必须设置setTimeout定时器,因为代码的执行是并行的,防止<video>还没加载完就向它获取时长,这样得到的结果将会是NaN
- before: function(obj){
- var courseId = $("#courseId").val();
- var video_time = document.getElementById("videoattr").duration;//视频时长
- var time_length=Math.ceil(video_time);//转为整型
- this.data={courseId: courseId, time_length:time_length};//动态改变传的参数
- layer.load();
- },
最重要的一句
- var video_time = document.getElementById("videoattr").duration;//视频时长
- var time_length=Math.ceil(video_time);//转为整型
这样,要获得视频时长作参数就搞定了。