XMLHttpRequest.upload 向后台上傳文件時監聽進度,主要使用的是
XMLHttpRequest提供的upload方法,此方法會返回一個XMLHttpRequestUpload對象,用來表示上傳進度 。 —— XMLHttpRequest.uploadFormData 是
XMLHttpRequest提供的一個新的接口,主要優點是可以異步上傳二進制文件。 —— FormData
具體操作如下
頁面結構及樣式
<input type="file" id="upload-file">
<div class="progress">
<div></div>
</div>
<button onclick="">上傳</button>
.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;
}

功能實現
function uploadFile() {
//獲取上傳的文件
var uploadFile = $('#upload-file').get(0).file[0];
var formdata = new FormData();
formdata.append('fileInfo', uploadFile);
$.ajax({
url: '/uploadfileurl',
type: 'post',
dataType: 'json',
processData: false,
contentType: false,
xhr: function() {
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;
}
})
}
最終效果

