Файл 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 = '';
                });
            });

        })
Другие вопросы по тегам