首页 > 解决方案 > 使用blob在浏览器中下载excel文件

问题描述

我需要在浏览器中下载一个 excel 文件。我在后端使用 nodejs,在前端使用纯 JavaScript。

我的 API 端点是“ https://callerid-lookup.herokuapp.com/download

/download/excel 


res.status(200);
var path = './report.xlsx';
fs.readFile(path, function (err, data) {
    res.setHeader('Content-disposition', 'attachment; filename=report.xlsx');
    res.setHeader('Content-type', 'application/vnd.ms-excel');
    console.log('server side1', data);
    res.send(data);
});

前端代码如下所示

 $.get("https://callerid-lookup.herokuapp.com/download", {
    responseType : 'ArrayBuffer'
},
    function (data, status) {
    console.log("Data: " + data + "\nStatus: " + status);
    var blob = new Blob([data], {
            type : 'application/vnd.ms-excel'
        });
    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = "report.xlsx";
    link.click();
});

我可以看到文件正在下载,但是在第一个单元格中下载的excel文件中只有[Object,Object]。

我尝试在 http 请求中将“responseType”作为“arraybuffer/blog”提供,但对我没有任何帮助,感谢帮助

日志文件:

客户端接收数据:https ://www.dropbox.com/s/w46o9gqt7z99bzt/client-response.txt?dl=0

服务器发送数据:https ://www.dropbox.com/s/xu7nzelbjbmzjwj/server-response.txt?dl=0

更新了示例 API 端点和 jquery UI 代码

标签: javascriptnode.jsblobfs

解决方案


推荐阅读