本文介绍如何使用jQuery和Bootstrap实现带进度条的多视频上传功能。通过封装form表单并利用ajaxSubmit方法,监听uploadProgress事件实时计算上传百分比,结合Bootstrap的progress-bar组件展示进度。代码包含前端HTML结构、CSS样式引用及完整的JavaScript处理逻辑,适用于后台管理系统的视频素材上传场景。
功能概述与效果展示
本文分享一段使用JavaScript实现带有进度条提示的多视频上传功能的完整代码,供开发者参考。
最终实现的效果如下图所示:

首先需要引入必要的依赖库,包括Bootstrap样式文件和jQuery相关的上传插件。
环境依赖与HTML结构
<link rel="stylesheet" href="bootstrap.css" >
<script src="jquery.fileupload.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
HTML部分定义了文件选择区域、删除按钮以及用于显示上传进度的进度条容器。
<div class="form-group">
<label>产品视频:</label>
<div class="videoUpfile">
<input type="file" name="avatarVideo" class="avatarVideo"><a class="btn deleteAvatarVideo" href="javascript:;" >删除</a>
<div class="videoMaterials">
<div class="progress">
<div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
<span class="sr-only">0% Complete</span>
</div>
</div>
<div class="files"></div>
<div class="showimg"></div>
<input type="hidden" value="" name="video_id[]">
<p style="color: #b92c28" class="img_upload_info"></p>
</div>
</div>
<div class="videoUpfile">
<input type="file" name="avatarVideo" class="avatarVideo"><a class="btn deleteAvatarVideo" href="javascript:;" >删除</a>
<div class="videoMaterials">
<div class="progress">
<div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
<span class="sr-only">0% Complete</span>
</div>
</div>
<div class="files"></div>
<div class="showimg"></div>
<input type="hidden" value="" name="video_id[]">
<p style="color: #b92c28" class="img_upload_info"></p>
</div>
</div>
</div>
JavaScript部分通过监听文件选择事件,动态包裹form表单并使用ajaxSubmit提交,同时处理上传进度和结果反馈。
JavaScript上传逻辑实现
//上传视频
$(".avatarVideo").change(function() {
var _this = $(this);
_this.wrap("<form class='fileUploadeVideo' action='/admin/uploadimg/addVideo' method='post' enctype='multipart/form-data'></form>");
_this.parents('.fileUploadeVideo').ajaxSubmit({
dataType: 'json',
beforeSend: function () {
$(".progress").show();
},
uploadProgress: function (event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
_this.parents('.videoUpfile').find(".progress-bar").width(percentComplete + '%');
_this.parents('.videoUpfile').find(".progress-bar").html(percentVal);
_this.parents('.videoUpfile').find(".sr-only").html(percentComplete + '%');
},
success: function (data) {
if(data.code==100) {
_this.parents('.videoUpfile').find(".files").html("文件名: " + data.video_title);
_this.parents('.videoUpfile').find("input[type=hidden]").val(data.video_id);
alert("上传成功!");
}else{
alert("上传失败");
}
},
error: function () {
alert("上传失败");
}
});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。