NODEJS如何生成远程文件压缩包

场景是这样的

比如有三个已知道URL(非本地磁盘文件),如http://www.xx.com/xx.doc%EF%BC%8C%E8%AE%BE%E6%83%B3%E6%98%AF%E6%8A%93%E5%8F%96%E4%B8%89%E4%B8%AAURL%E6%96%87%E4%BB%B6%E5%AD%97%E8%8A%82%E6%B5%81%E8%BD%ACbase64%EF%BC%8C%E7%84%B6%E5%90%8E%E6%8A%8A%E8%BF%99%E4%B8%89%E4%B8%AA%E6%96%87%E4%BB%B6%E7%94%9F%E6%88%90%E4%B8%80%E4%B8%AA%E5%8E%8B%E7%BC%A9%E5%8C%85%EF%BC%8C%E4%B9%9F%E6%98%AF%E8%BE%93%E5%87%BAbase64%E5%AD%97%E8%8A%82%E6%B5%81%EF%BC%8C%E4%B8%8B%E8%BD%BD%E8%A7%A3%E5%8E%8B%E5%90%8E%E6%98%AF3%E4%B8%AAurl%E5%AF%B9%E5%BA%94%E6%96%87%E4%BB%B6

因为是云端开发环境,限制是不能本地读写(生成压缩包可模拟,我这边后续处理是把该压缩包字节流通过云端api上传到云端环境,直接拿到该压缩包的url供业务场景使用,比如下载)

//抓取远程URL数据
var fetch=require('node-fetch');
var data= await fetch(input.fullpath).then(r => r.buffer()).then(buf => buf.toString('base64'));

再往后就没思路了

以下答案引用自GPT-3大模型,请合理使用:

```
// 以下是完整代码:
const fetch = require('node-fetch');
const archiver = require('archiver');

async function remoteFileZip(urls) {
const archives = archiver('zip', { zlib: { level: 9 }});
let zipData = [];
for (let i=0; i<urls.length; i++) {
let url = urls[i];
// 获取文件的buf
let buf = await fetch(url).then(r => r.buffer()).then(buf => buf.toString('base64'));
// 生成压缩包
archives.append(buf, { name: ${i}.${url.split(".")[1]} });
zipData.push(buf);
}
archives.finalize();
// 输出压缩包字节流
let zipBuffer = await new Promise((resolve, reject) => {
let zipBuffer = [];
archives.on('data', data => {
zipBuffer.push(data);
});
archives.on('end', () => {
resolve(Buffer.concat(zipBuffer));
})
});
return zipBuffer;
}

let remoteUrls = [
'http://www.xx.com/xx.doc',
'http://www.xx.com/xx2.doc',
'http://www.xx.com/xx

场景是远程3个文件,不能本地存储,需要压缩成一个文件,不知道csdn怎么乱码了