在节点js的zip文件中选择每个文件

时间:2018-11-06 16:22:20

标签: javascript node.js zipfile

我想用Node.JS编写一个本地API,并向其传递本地zip文件路径,例如"C:/Users/mansour/Desktop/Training/app.zip" 之后,我必须递归检查zip文件,如果有一个扩展名为".mogrt"的文件,那么我对该文件运行一个函数。 我写了一些代码,但我无法完成。

const extractZipFile = (mogrtUrl) => {
  return new Promise((resolve, reject) => {
    const zip = new AdmZip(mogrtUrl);
    zip.getEntries().forEach(entry => {
      if (entry.name.split('.').pop() === 'mogrt') {
        resolve({
          headers: {
            'Content-Type': '',
            'Access-Control-Allow-Origin': '*',
            'Cache-Control': 'public, max-age=31536000'
          },
          contents: []
        });
      }
    })
  });
}

我不使用快递。

我正在使用“ adm-zip”节点程序包。

1 个答案:

答案 0 :(得分:0)

我没有您的输入文件,因此您必须自行调试。

此函数应返回条目名称与“ .mogrt”匹配的对象的列表:

const extractZipFile = mogrtUrl => {
    const zip = new AdmZip(mogrtUrl);
    return zip.getEntries().reduce((list, entry) => {
        if (entry.name.split('.').pop() === 'mogrt') {
            list.push({
                headers: {
                    'Content-Type': '',
                    'Access-Control-Allow-Origin': '*',
                    'Cache-Control': 'public, max-age=31536000'
                },
                contents: []
            });
        }
        return list;
    }, []);
};

这是同步工作的,这取决于您的应用程序。如果由于文件太大而导致此过程花费的时间太长,则可以考虑使用异步方法来处理zip文件。