首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用axios下载zip,在内存中解压缩adm-zip (电子应用程序)

用axios下载zip,在内存中解压缩adm-zip (电子应用程序)
EN

Stack Overflow用户
提问于 2020-08-06 20:17:09
回答 2查看 6.2K关注 0票数 5

我需要下载一个文件与axios和解压缩在内存中的电子应用程序。

我在一些SO线程(e.g.)中读到,adm-zip支持字节缓冲区构造函数,但是我在文档中看不到这一点。当我提取内容时,它的行为就像数组是空的,但它不是。它只是创建一个文件,并且不抛出任何我不想使用的request错误,因为这个api被标记为不推荐使用。我的代码是:

代码语言:javascript
复制
const axios = require("axios");
const AdmZip = require('adm-zip');
   
const url = "http://update-service.test.w3champions.com/api/maps";
const body = await axios.get(url, {
    responseType: 'arraybuffer'
});
const data = body.data;
const zip = new AdmZip(data);
zip.extractAllTo(to, true);

我感到超级愚蠢,因为我曾经工作过一次,然后改变了一些事情,现在我似乎再也找不到错误了:/很遗憾,我没有承诺工作状态。

编辑:所以,我们知道了:电子做了一些奇怪的事情,返回一个阵列缓冲区,而不是一个缓冲区,这是adm所需要的。由于我很懒,添加了包arraybuffer-to-buffer,现在代码可以工作了:

代码语言:javascript
复制
const arrayBufferToBuffer = window.require('arraybuffer-to-buffer');
const url = `${this.updateUrl}api/${fileName}?ptr=${this.isTest}`;
const body = await axios.get(url, {
    responseType: 'arraybuffer'
});

const buffer = arrayBufferToBuffer(body.data);
const zip = new AdmZip(buffer);
zip.extractAllTo(to, true);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-06 20:27:50

检查数据类型,可能不是缓冲区。

阿霉素的实施:https://github.com/cthackers/adm-zip/blob/master/adm-zip.js

票数 3
EN

Stack Overflow用户

发布于 2020-08-06 20:28:18

它在axios中也是一样的。下面的代码是一个工作示例。

代码语言:javascript
复制
const axios = require('axios');
const AdmZip = require('adm-zip');

const f = async () => {
    const url = 'http://update-service.test.w3champions.com/api/webui';
    const body = await axios.get(url, {
        responseType: 'arraybuffer',
    });

    var zip = new AdmZip(body.data);
    var zipEntries = zip.getEntries();

    // search for "index.html" which should be there
    for (var i = 0; i < zipEntries.length; i++) {
        console.log(zip.readAsText(zipEntries[i]));
    }

    // and to extract it into current working directory
    zip.extractAllTo('.', true);
};

f();
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63291156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档