Edge中未调用xmlhttprequest onprogress

时间:2018-09-20 15:35:35

标签: javascript xmlhttprequest microsoft-edge

我正在使用以下JavaScript将文件上传到.Net WCF服务。

使用Chrome时,会定期调用onprogress函数。

使用Edge时,它只会在最后被调用一次。

var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload?filename=' + encodeURIComponent(fileToUpload.serverFilename), true);

// Listen to the upload progress.
xhr.upload.onprogress = function (e) {
    if (e.lengthComputable) {
        progress.setValue(e.loaded / e.total);
    }
};

xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            if (onSuccess !== undefined) onSuccess(fileToUpload);
        } else {
            Ext.Msg.alert('Upload Error', 'File: ' + fileToUpload.filename + '<br><br>Error: ' + xhr.status + ' ' + xhr.statusText);
            if (onError !== undefined) onError();
        }
    }
};

xhr.ontimeout = function () {
    console.log('transfer timed out')
}

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

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

这种行为显然是不一致的,但是我建议Edge的行为不符合应有的表现(如果只在最后调用,则onprogress事件中就没有意义了。)

有任何解决方法吗?还是我误解了它应该如何工作(尽管Chrome似乎很好理解)?

是Microsoft错误或不合规?并且需要等待10年,看看他们是否愿意解决它。

0 个答案:

没有答案