简体   繁体   中英

Upload file by XMLHttpRequest does not work with Microsoft Edge, but others

This java-script code works well with other browsers except Microsoft Edge, After the send(file) method is called, the request is not sent.

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);
        }
    };

It works after I change to this

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

    xhr.send(arrayBuffer); 
}           
reader.readAsArrayBuffer(file);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM