javascript - 使用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 代码
解决方案
推荐阅读
- xml - 我想在 FreeMarker 中将 XML 作为宏参数传递
- gatling - 如何在加特林中读取字符串响应数组?
- excel - 如果 Word 文档尚未打开,Excel VBA 代码会出错
- kerberos - 使用 Kerberos 身份验证和 Livy(通过 sparkmagic)时,文件路径变得无法访问
- d3.js - 如何继承工具提示的数字/日期格式,而不仅仅是轴?
- python - 像素化图像:"""name_image_matrix [::10,::10]""" 做什么?
- docker - 在 Docker 中注册到另一个容器中的服务器
- java - Android Studio 滑块
- python - 我可以用 Amazon Cognito 替换 django 管理面板登录代码吗?
- bash - 用于查找文件中缺少的数字的 Shell 脚本