xmlHttpRequest GET for responseType arraybuffer在电子

时间:2018-01-19 05:36:36

标签: javascript xmlhttprequest electron arraybuffer

我使用的是电子版1.7.9。 我需要在我的应用程序中下载一个zip文件。 以下代码用于相同的。

 var urlFetch = <path to the zip file I want to download>
 var xhr = new XMLHttpRequest();
 xhr.open('GET', urlFetch, true);
 xhr.responseType = "arraybuffer";
 xhr.onloadend = function () {
        var status = xhr.status;
        if (status == 200) {
            if (undefined !== xhr.response) {
                successCallback(xhr.response);
            } else {
                failureCallback();
            }
        } else {
            console.error("Failed to fetch " + urlFetch + ", status - " + status);
            failureCallback();
        }
    };
 xhr.send();

在Windows 10以及MacO HighSierra上,尽管状态为200,但此代码始终未定义xhr.response。

xhr.responseText用字符串填充,但我需要的是zip文件的二进制数据,我可以用它来存储到文件中以供进一步使用。

我也试过添加以下内容,但没有成功。

xhr.setRequestHeader("Content-Type", "application/zip");

我编码的方式有什么缺失,或者这是电子/铬等的错误吗?

相同的代码在独立的HTML中完全在电子之外工作。

1 个答案:

答案 0 :(得分:0)

问题在于包含的节点js模块xmlHttpRequest。 当我删除这个模块时,事情开始起作用。 我无法在电子应用中的开发工具的“网络”选项卡中看到XHR请求。 删除模块后,我现在可以看到请求和事情按预期工作。