JSZip的使用,向前端发送Zip包
业务场景
由于浏览器的自我保护机制,open.window只能发送一个请求,在此情况下需向前端发送多个文件或多个数据。即交互一次,多次响应。
引入
npm i jszip
前言
什么是buffer流?在传统的前端我们只需要做一些Unicode编码字符串处理,而在node中我们需要buffer来处理后端向前端传送的二进制数据。
后端JS代码(buffer流传输)
generateExcelZip(`批量导出数据`, bufferZip, response)
async generateExcelZip(fileName, buffer, response) {
response.implicitEnd = false
var zip = new JSZip()
var zipFile = zip.folder(fileName)
buffer.map((i, v) => {
zipFile.file(`${i.excelName}.xlsx`, i.buffer)
})
zip.generateAsync({ type: 'nodebuffer' }).then((content) => {
response.response.setHeader('Content-Type', 'application/zip')
response.response.setHeader('Content-Disposition', `attachment;filename=package.zip`)
const bufferStrream = new PassThrough()
bufferStrream.end(content)
bufferStrream.pipe(response.response)
})
},
后面还会持续更新,欢迎下方评论区留言,下期见
作者:琉璃Diaspora
|