使用AXIOS

时间:2018-03-03 09:23:06

标签: 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',
        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进行操作?

1 个答案:

答案 0 :(得分:1)

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

function * downloadFileSaga(url) {
    const response = yield axios.get(url, {
        responseType: 'arraybuffer'
    })
    console.log(response.data); // arraybuffer
}

然后,您可以使用Blob或FileReader进一步使用arraybuffer。

示例:https://codesandbox.io/s/n7kmvjr49m