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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效