node.js - 从nodejs下载excel的问题
问题描述
我有一个端点,它只是从 mongoose 集合中获取整个数据并将其转换为 excel 文件,然后将其下载到客户端中。我正在使用xlsx-to-json-lc npm 包将猫鼬数据转换为 excel。
.get(cors.cors,(req,res)=>{
var wb = XLSX.utils.book_new();
StockData.find({})
.then(async (resp)=>{
var ws = XLSX.utils.json_to_sheet(resp)
var down = __dirname+'/public/exportdata.xlsx'
XLSX.utils.book_append_sheet(wb,ws,"Sheet1")
await XLSX.writeFile(wb,down)
//everything is fine till here.excel got created
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
res.setHeader('Content-Disposition',"attachment; filename=" + path.join(__dirname,'../public/exportdata.xlsx') )
response.end()
})
问题是当我从前端单击下载按钮时,excel 正在下载但它没有打开。收到错误“文件已损坏”。
在前端( reactjs )中使用文件保护程序npm 包
import fileSaver from 'file-saver'
//some other code
axios.get("http://localhost:3000/excel",{},{
headers: {
'authorization': "Bearer " + tok,
'Accept' : 'application/json',
'Content-Type': 'application/json',
'responseType': 'arraybuffer'
}}
)
.then((resp)=>{
var blob = new Blob([resp.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
fileSaver.saveAs(blob, 'stockdata.xlsx');
console.log('Downloaded')
})
我在请求的 Accept 标头中也提供了application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,但没有成功。我不确定哪里出了问题。谁能帮我解决这个问题。
解决方案
推荐阅读
- perl - 如何在多行事件中提取特定字符串值
- html - Bootstrap 4,根据我们在第一列滚动的位置更改第二列内容
- php - 使用文本框中的参数调用 php
- bitmap - 如何将mipmap数据变成位图?
- c# - 自定义身份验证类型的登录页面设计:个人用户帐户 ASP.NET core 2.1、MVC、c#
- python - 如何调试“FileNotFoundError: [WinError 2] 系统找不到指定的文件”?
- ruby-on-rails - 为什么在我更改 Rails 应用程序中的 Bundler 后,Elastic Beanstalk 一直要求我从 root 用户更改它?
- sql - 如何在 Django ORM 查询中包含来自外键对象的数据?
- elasticsearch - 在 Elasticsearch 中,如何将规范化器与嵌套对象结合起来?
- node.js - 我是否必须更换 Google+ API