XMLHttpRequest文件上传在IE11中不起作用

Naveen Sakhamuri

嗨,我的页面上有以下JS。它在chrome和firefox上运行良好。但它不能在Internet Explorer 11上使用。我是Salesforce开发人员,并且对JavaScript的了解不多。您能帮我找到问题所在吗?提前致谢。

tests = {
        filereader: typeof FileReader != 'undefined',
        dnd: 'draggable' in document.createElement('span'),
        formdata: !!window.FormData,
        progress: "upload" in new XMLHttpRequest
    },
    support = {
        filereader: document.getElementById('filereader'),
        formdata: document.getElementById('formdata'),
        progress: document.getElementById('progress')
    },
    progress = document.getElementById('uploadprogress'),
    fileupload = document.getElementById('upload');
    
    "filereader formdata progress".split(' ').forEach(
        function (api) {
            if (tests[api] === false) {
                support[api].className = 'fail';
            } else {
                support[api].className = 'hidden';
            }
        }
    );
    
    function textBeforeDrag(flag){
        if(flag)
        {
            holder_txt1.className = '';
            holder_txt2.className = 'hidden';
        }else{
            holder_txt1.className = 'hidden';
            holder_txt2.className = '';
        }
    }
    
    function resetAll()
    {
        holder.className = holder_txt1.className = '';
        holder_txt2.className = uploadStatus.className = 'hidden';
    }
    
    function readfiles(files) { 
        
        var goodSize = true;
        var formData = tests.formdata ? new FormData() : null;
        for (var i = 0; i < files.length; i++) {
            size = typeof ActiveXObject !== 'undefined' ?
                        getIEFileSize(files[i])
                        :
                        files[i].fileSize || files[i].size;
            goodSize = 5000000 > size;
            if(!goodSize)
            {
                alert(files[i].name +' is too large, please choose a file that is 5Mb or less');
                return;
            }
            goodSize = 26214400 > size+{!allAttSize};
            if(!goodSize)
            {
                alert(this.files[0].name +' is too large - Total Attachment Size should not exceed 25MB');
                return;
            }
            uploadStatus.className = '';
            holder.className = 'hidden';
            
            // now post a new XHR request
            if (tests.formdata) {
                var xhr = new XMLHttpRequest();
                
                var sfdcurl = 'https://'+sfdcHostName+'.salesforce.com/services/apexrest/DragAndDrop/v1?FileName='+encodeURIComponent(files[i].name)+'&cType='+encodeURIComponent(files[i].type)+ '&parId={!thisCase.id}';
                
                xhr.open('POST','/services/proxy' );
                
                xhr.setRequestHeader("Authorization","Bearer {!$Api.Session_ID}");
                xhr.setRequestHeader('SalesforceProxy-Endpoint', sfdcurl);
                xhr.setRequestHeader('X-User-Agent', 'DragAndDropAPI v1.0');
                
                xhr.onload = function() {
                    progress.value = progress.innerHTML = 100;
                };
                
                if (tests.progress) {
                    xhr.upload.onprogress = function (event) {
                        if (event.lengthComputable) {
                            var complete = (event.loaded / event.total * 100 | 0);
                            progress.value = progress.innerHTML = complete;
                        }
                    }
                }
                
                xhr.onreadystatechange=function()
                {
                    if (xhr.readyState==4 && xhr.status != 200)
                    {
                        if(xhr.responseText)
                            alert(xhr.responseText);
                        else
                            alert('Some error occurred while uploading file');
                        
                        console.log(xhr);
                    }else{
                          
                    }
                }
                xhr.send(files[i]);
            }
        } 
        setTimeout(function(){addDroppedAttachment();},1000);
    }
    
    if (tests.dnd) {
        holder.ondragover = function () {
            this.className = 'hover';
            textBeforeDrag(false);
            return false;
        };
        holder.ondragend = function () {
            this.className = '';
            textBeforeDrag(true);
            return false;
        };
        holder.ondrop = function (e) {
            textBeforeDrag(true);
            this.className = '';
            e.preventDefault();
            readfiles(e.dataTransfer.files);
            resetAll();
        }
    } else {
        fileupload.className = 'hidden';
        fileupload.querySelector('input').onchange = function () {
            readfiles(this.files);
        };
    }

诺尔

在行中

var xhr = new XMLHttpRequest();

更改为

var xhr = new ActiveXObject('Msxml2.XMLHTTP');

现在,您的文件上传在Internet Explorer 11中有效。

也许,要使您的文件上传能够在所有导航器(支持XMLHTTPRequest)中正常工作,请尝试以下操作:

if('ActiveXObject' in window){
   return new ActiveXObject('Msxml2.XMLHTTP');
}else{
   return new XMLHttpRequest();
}

资料来源:http : //www.purplesquirrels.com.au/2014/06/local-ajax-calls-ie11/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

类的CSS仅在IE11中不起作用

来自分类Dev

追加元素在IE11中不起作用

来自分类Dev

表单按钮在IE11中不起作用

来自分类Dev

不到在IE11中不起作用-为什么?

来自分类Dev

bootstrap 3按钮在IE11中不起作用

来自分类Dev

window.open()在IE11中不起作用

来自分类Dev

边界半径在IE11中不起作用

来自分类Dev

OverCls在IE11中不起作用

来自分类Dev

PptxGenjs writeFile()在IE11中不起作用

来自分类Dev

PptxGenjs writeFile()在IE11中不起作用

来自分类Dev

ShellInABox在IE11中不起作用

来自分类Dev

DevExpress ASPxComboBox在IE11中不起作用

来自分类Dev

OverCls在IE11中不起作用

来自分类Dev

外部CSS在IE11中不起作用

来自分类Dev

rails SweetAlert 2在ie11中不起作用

来自分类Dev

Flex流在IE11中不起作用

来自分类Dev

Primefaces多文件选择在IE11浏览器中不起作用

来自分类Dev

使用 jQuery 的文件上传在 IE 中不起作用

来自分类Dev

导出文件在IE 11中不起作用

来自分类Dev

方向:RTL在IE11上不起作用

来自分类Dev

转换带有calc的translateY在IE11中不起作用

来自分类Dev

悬停时颜色变为灰度,在IE11中不起作用

来自分类Dev

为什么我的代码在IE11中不起作用

来自分类Dev

为什么forEach()在IE11的iframe中不起作用?

来自分类Dev

在IE11中,RowDataBound上Gridview行的背景颜色不起作用

来自分类Dev

使用Ajax渲染ViewComponent在Edge / IE11中不起作用

来自分类Dev

DotNetOpenAuth提供程序在https的ie11中不起作用

来自分类Dev

CSS表达式在IE11中不起作用

来自分类Dev

CSS3动画在IE11中不起作用