在ajax调用中使用XMLHttpRequest.upload监听上传过程,progress事件,输出回调函数中的event事件
示例代码如下:
function uploadFile() {
var data = new FormData();
data.append('file', $("#uploadvideo").prop("files")[0]); //file控件
$.ajax({
type: "post",
url: "UploadVideo_Upload",
data: data,
//async: false,//同步上传
//cache: false,//上传文件无需缓存
processData: false, // 不处理数据
contentType: false, // 不设置内容类型
success: function (data) {
if (data == "success") {
$("#a-upload").remove();
$("#td_upload").html("上传成功,请等待审核。");
$("#td_error").html("");
} else {
alert(data);
}
},
error: function (data) {
alert('请求失败,请刷新页面重试。');
},
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;
//通过设置进度条的宽度达到效果
$("#span_upload").html("正在上传中,已完成 " + progressRate.toFixed(2) + "%");
})
return xhr;
}
});
}