使用12mb文件大小解压缩时出错

即时通讯使用以下开源解压缩文件,其工作与预期的大小2-5 MB的zip,但是当我把更多的10 MB的zip我得到错误,有更稳定的开源,我可以用于大型zip文件? 我需要它在MIT的许可下。 这是我使用https://github.com/EvanOxfeld/node-unzip

var extractor = unzip.Extract({ path: "../"}); extractor.on("close", function() { console.log("Success unzip"); }); extractor.on("close", function(err) { console.log(err); }); req.pipe(extractor); 

根据这个问题的解压github页面 – https://github.com/EvanOxfeld/node-unzip/issues/73

  • 解压缩模块不再支持。
  • 一个与从http传输stream有关的问题似乎已经在一个名为unzip2的fork中解决了(这也是非常古老的)

尝试

 npm install unzip2 

还有其他的压缩MIT模块,你可以尝试:

你也可以find这个库 – https://www.npmjs.com/package/yauzl这解释了为什么'zip'文件格式不适合stream媒体。

https://www.npmjs.com/package/yauzl#no-streaming-unzip-api

由于.zip文件格式的devise,不可能在不牺牲正确性的情况下从头到尾(例如从可读stream)解释.zip文件。 中央目录是.zip文件内容的权威,它位于.zip文件的末尾,而不是开头。 stream媒体API需要caching整个.zip文件,以便在解释任何内容(破坏stream式接口的目的)之前到达中央目录,或者依赖穿过.zip文件散布的本地文件头。 但是,本地文件标题在规范中被明确谴责为不可靠的中央目录副本,所以相信它们将违反规范。

任何提供stream式解压API的库都必须做出以上两个妥协之一,这使得库不诚实或不一致(通常是后者)。 这个库坚持正确性和遵守规范,所以不提供stream媒体API。

有354个结果“解压”NPM – https://www.npmjs.com/search?q=unzip

无论您select哪种库,都要确保先使用这个库编写一个node.js程序,它直接从文件系统中提取错误的zip文件的内容。

一旦这个工作,你将能够添加Web服务器更多的复杂性。

我会使用CloudConvert api他们有一个npm可以处理这个。 它的示例代码可以在它们的文档中find,具体的例子是这个

 var fs = require('fs'), cloudconvert = new (require('cloudconvert'))(''); // install using 'npm install cloudconvert' fs.createReadStream('input.format').pipe(cloudconvert.convert({ "input": "upload" }).on('error', function(err) { console.error('Failed: ' + err); }).on('finished', function(data) { console.log('Done: ' + data.message); this.pipe(fs.createWriteStream('output.format')); }).on('downloaded', function(destination) { console.log('Downloaded to: ' + destination.path); })); 

你确实需要互联网连接才能工作。 至于MIT的许可,显然这是一个不是独立的代码。 但是它的function和可靠性将远远超过本地系统上的任何东西。 如果你担心麻省理工学院的许可证,这是免费的。 如果你想要一个麻省理工学院的许可证,所以你可以编辑和操纵它,这可能无法正常工作。