场景是这样的
因为是云端开发环境,限制是不能本地读写(生成压缩包可模拟,我这边后续处理是把该压缩包字节流通过云端api上传到云端环境,直接拿到该压缩包的url供业务场景使用,比如下载)
//抓取远程URL数据
var fetch=require('node-fetch');
var data= await fetch(input.fullpath).then(r => r.buffer()).then(buf => buf.toString('base64'));
再往后就没思路了
场景是这样的
因为是云端开发环境,限制是不能本地读写(生成压缩包可模拟,我这边后续处理是把该压缩包字节流通过云端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