ajax上传文件,执行progress失败
接了一个项目是给一个ajax文件上传添加个进度条。
也怪自己没走脑子,各种方法试了无数次都不行,都是progress不执行。
最后大佬一句话问是不是异步没开,瞬间感觉自己像个白痴。
function saveapp(file) {
var div = $(file).parent().next("#preview");
if(file.files && file.files[0]) {
div.empty();
var reader = new FileReader();
var filemaxsize = 100*1024*1024;
var size = file.files[0].size;
if (size > filemaxsize) {
alert("附件大小不能大于100M!");
target.value = "";
return false;
}
reader.readAsDataURL(file.files[0]);
showLoading("正在上传,请等待 ...");
var formData = new FormData();
formData.append('upfile',file.files[0]);
$.ajax({
url: "ajaxphp.do",
type: 'POST',
data: formData,
async: false,
//cache: false, //重点就在这里,想要progress执行这里一定不能是false
contentType: false,
processData: false,
xhr: function(){ //获取ajaxSettings中的xhr对象。
var xhr = $.ajaxSettings.xhr();
if (xhr.upload) {
xhr.upload.addEventListener("progress", function (e) {
var loaded = e.loaded;//已经上传大小情况
var tot = e.total;//附件总大小
var per = Math.floor(100*loaded/tot); //已经上传的百分比
$("#upload_son").html( per +"%" );
$('#upload_progress').val(per);
console.log('附件总大小 = ' + loaded);
console.log('已经上传大小 = ' + tot);
}, false);
return xhr;
}
},
success: function (returndata) {
var infoData = new Function("return" + returndata)();
if(infoData.msgFlag=='0'){
div.empty();
div.append(infoData.msgContent);
}else{
var hid;
var hname;
div.children("#savepath").remove();
div.append('<input id="savepath" name="bappmerlog.savepath" value="'+infoData.appsource+'" type="hidden">');
div.append("保存app成功");
}
closeLoading();
},
error: function (returndata) {
closeLoading();
}
});
}
}