前端实现多视频上传

  • 效果图如下 :
    在这里插入图片描述

  • 其实拿电视剧来举例子更合适,比如要添加一个电视剧,而这部电视剧有很多集,而如果视频格式是m3u8格式的话,就和我的一样了,就需要同时选中很多个文件,这个时候就需要用到这样类似的功能了

  • 代码如下 :


<style>
.line {
	width: 80%;
    height: 1px;
    border-top: solid RGB(85, 175, 230) 1px;
    margin: 0 auto;
}
</style>

<form enctype="multipart/form-data">
	<div class="class">
		<div class="form-group col-md-12 col-xs-12">
		    <label class="col-md-3 col-xs-12">请输入课程名称</label>
		    <div class="col-md-9 col-xs-12">
		        <input type="text" id="addClassName" class="form-control"
		               name="addClassName[]">
		    </div>
		</div>
		<div class="form-group col-md-12 col-xs-12">
		    <label class="col-md-3 col-xs-12">请选择视频</label>
		    <div class="col-md-9 col-xs-12">
		        <input onchange="selectVideos(this)" type="file" id="uploadVideos" name="file[]" multiple>
		    </div>
		</div>
		
		<div class="form-group col-md-12 col-xs-12">
		    <label class="col-md-3 col-xs-12">请输入第几节:</label>
		    <div class="col-md-9 col-xs-12">
		        <input type="text" class="form-control" name="sort[]"
		               placeholder="第1节就输入1"
		               required value="">
		    </div>
		</div>
		<div class="form-group col-md-12 col-xs-12">
		    <div class="line"></div>
		</div>
	</div>
	
	<div class="modal-footer" style="border-top:transparent;">
		<button type="button" class="btn btn-info" onclick="addVideos()" style="margin-right: 700px">添加视频
		</button>
		<button type="button" onclick="addSubmit()" class="btn btn-primary">确认提交</button>
		<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
	</div>
</form>

<script>
	var fileCountList = [];
	// 添加视频按钮
	function addVideos() {
		let addDom = "<div class='form-group col-md-12 col-xs-12'><label class='col-md-3 col-xs-12'>请输入课程名称</label><div class='col-md-9 col-xs-12'><input type='text' class='form-control' name='addClassName[]'> </div></div><div class='form-group col-md-12 col-xs-12'><label class='col-md-3 col-xs-12'>请选择视频</label><div class='col-md-9 col-xs-12'> <input type='file' name='file[]' multiple οnchange='selectVideos(this)'></div></div> <div class='form-group col-md-12 col-xs-12'><label class='col-md-3 col-xs-12'>请输入第几节:</label><div class='col-md-9 col-xs-12'><input type='text' class='form-control' name='sort[]' placeholder='第1节就输入1' required></div></div><div class='form-group col-md-12 col-xs-12'><div class='line'></div> </div>";
		$('.class').append(addDom)
	}
	// 获取选择视频的个数(因为目前我写的是上传m3u8文件,所以需要用这个来告诉后端每一集有多少个ts文件,如果是上传mp4文件的话,我猜是不用说明这个的,不过我没有尝试过)
	function selectVideos(obj) {
        let fileCount = obj.files.length;
        fileCountList.push(fileCount);
    }
    // 确认提交按钮
    function addSubmit() {
    	// 在使用FormData提交数据的时候,需要用原生的js,不能使用jQuery,如果要使用jQuery获取的话,需要将jQuery获取到的对象转换成原生的DOM节点,具体的可以看我之前的一篇文章
    	// 这个时候如果使用console.log(formData)是看不到数据的,但是不要怀疑,按照下面的操作仍然是可以把数据提交上去的
        let formData = new FormData(document.getElementById('uploadVideosForm'));
        // 向formData中添加数据
        formData.append('fileCountList',fileCountList);
        $.ajax({
            url: '上传视频的路径',
            method: 'post',
            processData: false,
            contentType: false,
            dataType: "json",
            data: formData,
            success: function (data) {
				console.log(data)
            }
        })
    }
</script>
代码来源:http://xxling.com/blog/article/75.aspx 我只是将其代码中asp实例改成了php,转载及使用必须注明原作者。 请遵循原作者开放分享的方式,请勿用来赚取积分!!! 代码做的非常简单,只是用于演示,没有加入任何过滤函数。请务必修改(加入过滤函数)后使用,【坚决不能】直接用于网站!! 之前没怎么接触过js,也是随手做一个。如果不满意请各位多包含,毕竟我不是骗分,也请您高抬贵手。 目前网上看到最好的一个HTML5批量上传程序,它使用纯html+js进行批量上传,不需要flash、jquery等额外组件,大小只有10KB左右。 主要是我想研究一下html5批量上传,但发现纯html5在php中会出现超时、没有进度等问题,于是这网上找了一圈。发现目前的代码,要不就是传统的flash,要不就是调用臃肿的jquery,要不就是代码动辄几百K,根本没法分析。而且CSDN上资源骗分居多,找了一圈花了几十分,还是没下载到一个真正满意的代码。 于是根据这位博主的分享,把原程序精简,并改为了php脚本。因为我php也是初学,之前一直出现只上传1个文件的问题。后来发现是由于定义秒为文件名,本地速度过快将前面的函数覆盖了。多亏了php的sleep,才将这个问题解决。 于是这个简单的批量上传组件就这样做好了,欢迎各位测试和修改。 最后再次提醒各位务必牢记原作者xiaolingzi和其博客地址地址: http://xxling.com/blog/article/75.aspx 转载请注明原作者,修改和使用也不要去掉js的作者标记。 毕竟那标记就一行,人家写个程序很不容易,请各位尊重作者的劳动。谢谢各位配合!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值