1.css
<style type="text/css">
.progress {
width: 600px;
height: 10px;
border: 1px solid #ccc;
border-radius: 10px;
margin: 10px 0px;
overflow: hidden;
}
/* 初始状态设置进度条宽度为0px */
.progress > div {
width: 0px;
height: 100%;
background-color: yellowgreen;
transition: all .3s ease;
}
</style>
2.html
<div class="progress">
<div></div>
</div>
<form id="uploadForm" style="display:block;">
<input style="display:inline;" class="btn btn-default" type="file" name="img" multiple="multiple"></input>
<input class="btn btn-default" type="button" value="上传" onclick="doUpload()">
<input type="text" id="fileNameList" style="display:none;"></input>
<input type="hidden" name="test"></input>
</form>
3.js
<script type="text/javascript">
//上传文件
function doUpload(){
var formData = new FormData($("#uploadForm")[0]);
$.ajax({
url : "/upAjax",
type: 'POST',
data: formData,
contentType: false,
processData: false,
xhr : function(result) {
var xhr = new XMLHttpRequest();
//使用XMLHttpRequest.upload监听上传过程,注册progress事件,打印回调函数中的event事件
xhr.upload.addEventListener('progress', function (e) {
console.log(e);
//loaded代表上传了多少
//total代表总数为多少
var progressRate = (e.loaded / e.total) * 100 + '%';
//通过设置进度条的宽度达到效果
$('.progress > div').css('width', progressRate);
})
return xhr;
},
success: function(result){
if(result==""||result==null){
alert("请至少选择一个文件~~");
}else{
console.log("上传成功~~");
}
},
error : function(data) {
alert("上传失败~~");
}
});
}
</script>
后台省略