通过XMLHttpRequest上载文件不适用于Microsoft Edge,但适用于其他应用程序

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

本文关键字:适用于 其他 应用程序 Edge Microsoft 上载 文件 不适用 通过 XMLHttpRequest      更新时间:2023-09-26

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

在我更改到此后,它就可以工作了

var reader = new FileReader(); 
reader.onload = function(){
    var arrayBuffer = this.result;
    xhr.send(arrayBuffer); 
}           
reader.readAsArrayBuffer(file);
相关文章: