Файл FormData, ajax не публикует $_FILES в IE 11
У меня есть следующий код (formdata) в JavaScript, и он работает правильно в Mozilla и Chrome. Когда я попробовал это в IE 11, он не очень хорошо использует AJAX. Функция успеха называется, но $_FILES
пусто на стороне сервера.
file = _files[i][j];
if(j<_files[i].length){
if(file){
var data = new FormData();
data.append("uploadedimages", file);
console.log("formdata:"+data);
progressElement = $('#divimg_'+i+'_'+j);
progressElement.css('visibility','visible').hide().fadeIn('500');
$.ajax({
url: "<?php echo base_url();?>"+"upload/do_upload",
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data){
console.log(data);
j++;
if(j<_files[i].length){
uploadmore(i,j);
}else{
i++;
uploadme(i,0);
}
},
xhr: function()
{
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener( 'progress', function( e )
{
if( e.lengthComputable )
{
// Append progress percentage.
var progressValue = ( e.loaded / e.total ) * 100;
console.log( i + ':' + progressValue );
progressElement.find( 'input' ).val( progressValue ).change();
// Listen for clicks on the cancel icon.
$('#stopupload').click( function()
{
if( progressElement.hasClass( 'working' ) )
{
xhr.abort();
progressElement.fadeOut(500);
}
});
if( progressValue == 100 )
{
progressElement.removeClass( 'working' );
}
}
}, false);
return xhr;
}
});
}
else{
console.log("FILE ERROR!");
j++;
uploadmore(i,j);
}
}
1 ответ
Я была такая же проблема. После нескольких дней испытаний различных параметров, я получил его для работы с IE 11. Обязательно добавьте form.serialize()
к компоненту данных. Я также добавил полный URL-адрес получающего URL
data : formdata ? formdata : form.serialize(),
$ ('# btnUploadFile'). on ('click', function () { var formdata = new FormData (); var files = $ ("# fileUpload"). get (0).files; // Добавить загруженное изображение в коллекцию данных формы if (files.length > 0) { formdata.append("UploadedImage", файлы [0]); } еще { оповещение ("Пожалуйста, выберите файл для загрузки.") вернуть; } var loc = window.location; var uploadReceiverURL; if (loc.host.indexOf("local")>-1) { uploadReceiverURL = loc.protocol + '//' + loc.host + "/uploadReceiver.aspx"; } еще { uploadReceiverURL = loc.protocol + '//' + loc.host + "/rolechanges/uploadReceiver.aspx"; } console.log('uploadReceiverURL: ' + uploadReceiverURL); var ajaxRequest = $.ajax({ url: uploadReceiverURL, данные: формданные? formdata: form.serialize(), кеш: ложь, contentType: false, processData: false, тип: 'POST', success: function(data, textStatus, jqXHR) { console.log('Success: ' + textStatus); }, ошибка: функция (jqXHR, textStatus, errorThrown) { console.log('ОШИБКИ: ' + textStatus); } }); ajaxRequest.done(function (xhr, textStatus) { document.getElementById('fileUpload').value = ''; }); }); })