jquery.fileupload.js在IE8和IE9下获取不到文件的类型和文件大小

发布于 2022-09-06 11:20:03 字数 3905 浏览 33 评论 0

项目中使用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下
IE11下

------------------IE8下---------------------------
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

始终不够爱げ你 2022-09-13 11:20:03

为什么在ie9中,done函数里面data.result=undefined

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文