koa打包文件为压缩文件夹并返回给浏览器下载

2,257 阅读1分钟

最近在写爬虫的相关程序,在这个过程中遇到一个问题,即将服务器当中的文件返回给浏览器下载。如果是一个个文件返回,会比较的难看,并且会显得你很没有逼格。因此,在查阅了相关文档后,总结了一下方法,为避免忘记,下面先写下来。

const fs = require('fs');
const send = require('koa-send');
const archiver= require('archiver');

// 生成压缩文件流
const zipName = `${文件夹名}.zip`;
const zipStream = fs.createWriteStream(zipName);
const zip = archiver('zip');
zip.pipe(zipStream);
const readDir = fs.readdirSync('要返回给浏览器下载的文件夹名');
for(let i = 0;i < readDir.length;i ++) {
    zip.append(readDir[i],{name: readDir[i]});
}
this.ctx.attachment(zipName);
await send(this.ctx,zipName);

如果哪位大神有更好的方法,欢迎指教。