从Node.js API返回zip文件并在客户端处理的方法如下:
fs
模块来读取要压缩的文件,并使用archiver
模块创建一个zip文件。const fs = require('fs');
const archiver = require('archiver');
// 读取要压缩的文件
const file = fs.createReadStream('path/to/file');
// 创建一个可写流,用于存储zip文件
const output = fs.createWriteStream('path/to/output.zip');
// 创建一个archiver实例
const archive = archiver('zip', {
zlib: { level: 9 } // 设置压缩级别
});
// 将可写流连接到archiver实例
archive.pipe(output);
// 将要压缩的文件添加到zip文件中
archive.append(file, { name: 'file.txt' });
// 完成压缩并关闭archiver和可写流
archive.finalize();
const express = require('express');
const app = express();
app.get('/download', (req, res) => {
// 设置响应头,告诉浏览器响应内容为zip文件
res.setHeader('Content-Type', 'application/zip');
res.setHeader('Content-Disposition', 'attachment; filename=output.zip');
// 读取zip文件并将其发送给客户端
const file = fs.createReadStream('path/to/output.zip');
file.pipe(res);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
JSZip
库来解压缩zip文件,并访问其中的文件内容。// 引入JSZip库
import JSZip from 'jszip';
// 下载zip文件
fetch('/download')
.then(response => response.blob())
.then(blob => {
// 解压缩zip文件
return JSZip.loadAsync(blob);
})
.then(zip => {
// 访问zip文件中的文件内容
zip.file('file.txt').async('string')
.then(content => {
console.log(content);
});
})
.catch(error => {
console.error(error);
});
这样,你就可以从Node.js API返回zip文件,并在客户端进行处理了。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云