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

koala_0
  • 90

项目中使用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下---------------------------
图片描述

回复
阅读 4.6k
1 个回答
半步多
  • 1
新手上路,请多包涵

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏