Загрузка файла по XMLHttpRequest не работает с Microsoft Edge, но другие

javascript file-upload xmlhttprequest microsoft-edge

748 просмотра

1 ответ

33 Репутация автора

Этот код java-скрипта хорошо работает с другими браузерами, кроме Microsoft Edge. После вызова метода send (file) запрос не отправляется.

this.uploadFile = function (file, index, filesStorage) {
        try {
            if (file == undefined || file == null) { return; }

            var xhr = new XMLHttpRequest();
            xhr.withCredentials = true;
            xhr.hasLoaded = false;

            // Update progress bar
            xhr.upload.addEventListener("loadstart", function (event) { filesManager_5.startFileProgress(event, file.uid); }, false);
            xhr.upload.addEventListener("progress", function (event) { filesManager_5.updateFileProgress(event, file.uid); }, false);
            xhr.upload.addEventListener("loadend", function (event) { filesManager_5.endFileProgress(event, file.uid); }, false);
            xhr.addEventListener("readystatechange", function (event) { filesManager_5.changeStateFileProgress(event, file.uid, this.readyState); }, false);
            xhr.upload.addEventListener("error", function (event) { alert('Error!'); }, false);
            //xhr.upload.addEventListener("abort", function (event) { alert('Abort!'); }, false);

            xhr.open("post", "~/Html5UploadHandler.ashx", true);

            xhr.setRequestHeader("Content-Type", file.type);
            xhr.setRequestHeader("X-File-Name", file.name);
            xhr.setRequestHeader("X-File-Type", file.type);
            xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
            xhr.setRequestHeader('X-Upload-Id', GetUploadId());

            this._fileRequests[file.uid] = xhr;
            xhr.send(file);
        } catch (e) {
            alert(e);
        }
    };
Автор: Hoàng Trần Huy Источник Размещён: 19.07.2016 08:14

Ответы (1)


0 плюса

33 Репутация автора

Решение

Это работает после того, как я перехожу на это

var reader = new FileReader(); 
reader.onload = function(){
    var arrayBuffer = this.result;

    xhr.send(arrayBuffer); 
}           
reader.readAsArrayBuffer(file);
Автор: Hoàng Trần Huy Размещён: 19.07.2016 09:47
Вопросы из категории :
32x32