Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AXIOS在Firefox扩展中使用XMLHttpRequest获取二进制数据_Javascript_Reactjs_Redux_Axios_Redux Saga - Fatal编程技术网

Javascript 使用AXIOS在Firefox扩展中使用XMLHttpRequest获取二进制数据

Javascript 使用AXIOS在Firefox扩展中使用XMLHttpRequest获取二进制数据,javascript,reactjs,redux,axios,redux-saga,Javascript,Reactjs,Redux,Axios,Redux Saga,我正在尝试从Firefox浏览器下载二进制数据。我的应用程序基于react和redux,并使用axios作为我的HTTP客户端。 我必须送 xhr.open()在responseType=arraybuffer 下面的实现不起作用 axios({ url:`http://api.demo6.test.com:8080/resources/v1/${dObj.payload.surveyId}`, responseType: 'arraybuffer',

我正在尝试从Firefox浏览器下载二进制数据。我的应用程序基于react和redux,并使用axios作为我的HTTP客户端。 我必须送
xhr.open()
responseType=arraybuffer

下面的实现不起作用

 axios({
        url:`http://api.demo6.test.com:8080/resources/v1/${dObj.payload.surveyId}`,
        responseType: 'arraybuffer',
        method: 'post',
        data: dObj.payload.filterData,
        headers: {
            "Accept": "application/vnd.ms-excel",
            "Content-Type": "application/json",
            "X-Bazaarify-Session-Token": "cfff-7-07f13399abed" //token
        }
    }).then(function(response) {
        // const y  = yield put(surveyResponseDowloadComplete({
        //     data: response.data
        // }));
        let blob = new Blob([response.data], {type: "application/vnd.ms-excel"});
        let link = document.createElement("a");
        link.href = window.URL.createObjectURL(blob);
        link.download = "test.xls";
        link.click();
        console.log(response);
        //response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
    });

这是一个使用axios下载二进制数据的简单故事:

function * downloadFileSaga(url) {
    const response = yield axios.get(url, {
        responseType: 'arraybuffer'
    })
    console.log(response.data); // arraybuffer
}
然后可以使用Blob或FileReader进一步使用arraybuffer


示例:

谢谢@martin您提供的解决方案没有在更新的问题中查看代码,我怀疑问题不在于代码本身,而可能是某些网络权限。不幸的是,我没有FF扩展的经验,但在Chrome中,您必须在ExtensionNo清单文件中设置正确的访问权限。