客户端下载csv,数据源从node层获取

219 阅读1分钟

客户端代码

const a = document.createElement('a')
a.href = `url`document.body.appendChild(a)
a.click()
document.body.removeChild(a)

node层获取数据源,返回csv

const iconv = require('iconv-lite')const axios = require('axios')
let download = await axios({     
     method: 'post',     
     timeout: 5000,
     data: {},
     url: `url`,
}).then(data => data.data || {}).
catch(err => {
     return {}
})        
let { rows = [] } = download //获取接口数据源
rows = rows.map(item => item.cols || [])
rows = stringify(rows)
let str = Buffer.from(rows); //字符串转buffer
str = iconv.encode(str, 'GBK');//处理中文字符乱码的问题
res.setHeader('Content-Type', 'text/csv')
res.setHeader('Content-Disposition', `attachment; filename="eg.csv"`)        
res.send(str)