Javascript 使用AXIOS在Firefox扩展中使用XMLHttpRequest获取二进制数据
我正在尝试从Firefox浏览器下载二进制数据。我的应用程序基于react和redux,并使用axios作为我的HTTP客户端。 我必须送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',
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清单文件中设置正确的访问权限。