jquery.fileupload.js在IE8和IE9下获取不到文件的类型和文件大小
项目中使用jquery.fileupload作为文件上传插件,其它浏览器都很OK,目前遇到两个比较棘手的问题:
1.在IE8和IE9下获取不到文件的file.size和file.type对象,只能获取到文件的file.name对象;
2.在IE8和IE9下上传空文件(0K)的文件没有任何反应,也没有提示;
$('#file').on('click', '.file-up', (e) => {
let $this = $(e.currentTarget),
$format = $this.siblings('p').find('.format').text(),
$hihts = $this.siblings('.s-tips'),
$fileBox = $this.siblings('.file-show-wrap'),
$fileBtn = $this.find('input[name=upfile]'),
iframsFlag = false;
if (this.isIe(8) || this.isIe(9)) {
iframsFlag = true;
}
$fileBtn.fileupload({
url: 'front/sh/NGQuestionnaire!upload?uid=uploadFile',
iframe: iframsFlag,
maxFileSize: 52428800,//文件不超过50M
maxNumberOfFiles: 1,//最大上传文件数目
dataType: 'json',
add: function (e, data) {
let file = data.files[0];
if (file.type || file.size) {
let fileType = file.name.substr(file.name.lastIndexOf('.'));
if ($format.indexOf(fileType.toLowerCase()) < 0) {
layer.msg(`暂时不支持此文件类型哦`)
return false;
}
if (file.size >= 52428800) {
layer.msg(`暂不支持大于50M的文件哦`)
return false;
}
if (!file.size || file.size == 0) {
layer.msg(`${file.name}是空文件,不支持上传,请重新选择。`)
return false;
}
}
var jqXHR = data.submit()
.error(function (jqXHR, textStatus, errorThrown) {
if (textStatus == "error") {
layer.msg(`文件上传失败,请重试`);
layer.closeAll('loading');
}
});
layer.load(2, loadOpt);
},
done: function (e, data) {
console.log(JSON.stringify(data.result))
if (data.result.returnCode && data.result.returnCode == 1) {
$hihts.hide();
$this.parents('[qutypecd=110]').attr('answered', 'true');
let fileSrc = data.result.bean.aswrPicUrlAddr,
fileType = data.result.bean.fileType,
setData = `data-filename="${data.files[0].name}" data-fileUrl="${fileSrc}"`;
Answer.prototype.updateProgress();
if (fileType == 1) {
$fileBox.html(`<img src="${fileSrc}" ${setData} alt="${data.files[0].name}" />`)
} else {
$fileBox.html(`<span ${setData}>${data.files[0].name}</span>`)
}
layer.msg(`文件上传成功`, { time: 1000 });
} else {
Answer.prototype.updateProgress();
$this.parents('[qutypecd=110]').attr('answered', 'false');
layer.msg(data.result.returnMessage);
}
layer.closeAll('loading');
}
});
});
网上说的几个IE8下上传成功后下载的问题都解决了,目前就这两个问题比较麻烦。
附上两张IE11和IE8下的files对象
IE11下
------------------IE8下---------------------------
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么在ie9中,done函数里面data.result=undefined