通过XMLHttpRequest上传文件,并显示进度条

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

	function submitRequest(callback) {
var apkFile = document.getElementById("file").files[0];
if (apkFile) {
var fileName = apkFile.name;
var suff = fileName.substring(fileName.lastIndexOf('.') + 1,fileName.length);
if (suff != "apk") {
$.messager.alert("提示", messageCreator("文件格式必须为apk!"));
return;
}
}
var fd = new FormData();
if (apkFile) {
var apkName = apkFile.name;
fd.append("apkName", apkName);
fd.append("apkFile", apkFile);
}
var seq = $('#inputSeq').val();
fd.append("seq", seq);
fd.append("developer", $('#inputDeveloper').textbox('getText'));
fd.append("isTop", $('#inputIsTop').combobox('getValue'));
fd.append("isRecommend", $('#inputIsRecommend').combobox('getValue'));
fd.append("isRelease", $('#inputIsRelease').combobox('getValue'));
fd.append("description", $('#inputDescription').val());
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.open('POST', AppContextPath + "/rest/app/save_app", true);
/*
xhr.onload = function() {
$.messager.alert("提示", "添加成功", null, function() {
window.top.iframeNavigator('ifrmContent','service/app_main.html');
if (callback != null)
callback();

});
};
*/
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200){
$.messager.alert("提示", "添加成功", null, function() {
window.top.iframeNavigator('ifrmContent','service/app_main.html');
if (callback != null)
callback();

});
}else if(xhr.readyState == 4&& xhr.status != 200){
var jsonError = eval("(" + xhr.responseText + ")");
var errorType = jsonError.type;
if(errorType == "ApkDuplicate"){
$.messager.alert("提示", "该Apk已经上传!", null, function() {window.top.iframeNavigator('ifrmContent','service/app_main.html');

});
}
}
};
xhr.send(fd);
}
function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
document.getElementById('progressNumber').innerHTML = '<font color=red>当前进度:'+percentComplete.toString() + '%</font>';
}
else {
document.getElementById('progressNumber').innerHTML = 'unable to compute';
}
}