dfzz 2023-02-17 11:56 采纳率: 66.7%
浏览 14
已结题

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'));

再往后就没思路了

  • 写回答

3条回答 默认 最新

  • GISer Liu 2023-02-17 13:14
    关注

    以下答案引用自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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月20日
  • 创建了问题 2月17日

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂