微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React Axios - 从 Django 后端下载 excel 文件

如何解决React Axios - 从 Django 后端下载 excel 文件

我正在尝试下载由 Django 后端生成的 excel 文件

class GenerateExcel(APIView):
    def get(self,request):
        filename = 'File.xlsx'
        wb = Workbook()
        ws = wb.active
        ws.title = "Workbook"
        response = HttpResponse(save_virtual_workbook(wb),content_type='application/ms-excel')
        response["Content-disposition"] = 'attachment; filename="' + filename + '"'
        return response

如果我通过邮递员发送请求,我会收到成功的响应,我可以通过选项“保存响应”->“保存到文件”下载文件,并且它工作正常。

如果我尝试使用 axios 在我的前端下载它,我可以下载 excel 文件,但它的大小与邮递员提供的文件不同,并且无法打开 excel 文件。我收到文件已损坏错误。 我正在使用 redux,因此此代码位于操作文件中:

export const getYhrtaskgrpExcel = (fromDate,toDate) => async dispatch => {
    const url = `http://127.0.0.1/excel-report/`;

    try {
        dispatch({
            type: GET_EXCEL_REQUEST
        });

        const res = await axios.get(url,{responseType: 'arraybuffer'})
        dispatch({
            type: GET_EXCEL_SUCCESS,payload: res.data
        });
        console.log('this is data: ',res.data);
        var FileSaver = require('file-saver');
        var blob = new Blob([res.data],{type:'application/ms-excel'});
        FileSaver.saveAs(blob,"excel.xlsx");
    } catch (error) {
        dispatch({
            type: GET_EXCEL_FAIL,payload: error.data
        });
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。