gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:55:41 34 4
gpt4 key购买 nike

您好,我的页面上有以下 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/ .

关于javascript - XMLHttpRequest 文件上传在 IE11 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590353/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com