Axios 请求返回 XHR 响应

时间:2021-02-04 16:10:13

标签: node.js mongodb express axios xmlhttprequest

我正在尝试向后端发出 axios 请求,然后返回并返回 excel 文件作为响应。但是,在“网络”选项卡中,我得到的只是 XHR 类型的响应,没有下载 excel 文件。

await axios({
            method: 'GET',
            url: 'http://127.0.0.1:8000/summary_results',
        });
exports.summaryResults = (req, res, next) => {
    const workbook = new excel.Workbook();

    workbook.creator = 'Me';
    workbook.lastModifiedBy = 'Her';
    workbook.created = new Date(1985, 8, 30);
    workbook.modified = new Date();
    workbook.lastPrinted = new Date(2016, 9, 27);
    workbook.properties.date1904 = true;

    workbook.views = [
        {
            x: 0,
            y: 0,
            width: 10000,
            height: 20000,
            firstSheet: 0,
            activeTab: 1,
            visibility: 'visible',
        },
    ];
    const worksheet = workbook.addWorksheet('My Sheet');
    worksheet.columns = [
        { header: 'Id', key: 'id', width: 10 },
        { header: 'Name', key: 'name', width: 32 },
        { header: 'D.O.B.', key: 'dob', width: 10, outlineLevel: 1, type: 'date', formulae: [new Date(2016, 0, 1)] },
    ];

    worksheet.addRow({ id: 1, name: 'John Doe', dob: new Date(1970, 1, 1) });
    worksheet.addRow({ id: 2, name: 'Jane Doe', dob: new Date(1965, 1, 7) });

    res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    res.setHeader('Content-Disposition', 'attachment; filename=' + 'Report.xlsx');
    workbook.xlsx.write(res).then(() => {
        res.end();
        console.log('File write done........');
    });
};

有没有更好的方法来做到这一点?

0 个答案:

没有答案