nodejs从url下载并解压缩文件,错误找不到END头

我试图从nseindia.com下载文件并解压缩到内存中。 我正在使用nodejs webkit和adm-zip。 我在控制台上出现错误:

未捕获无效或不支持的zip格式。 找不到END标头

代码

var http = require('http'), fs = require('fs'), request = require('request'), AdmZip = require('adm-zip'), out = fs.createWriteStream('data/nseeqbhav.zip'); // For saving NSE Equity bhavcopy // Downloading NSE Bhavcopy request( { method: 'GET', uri: 'http://www.nseindia.com/content/historical/EQUITIES/2012/DEC/cm19DEC2012bhav.csv.zip', headers: { "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11", "Referer": "http://www.nseindia.com/products/content/all_daily_reports.htm", "Accept-Encoding": "gzip,deflate,sdch", "encoding": "null", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Cookie": "cookie" } } ).pipe(out); var zip = new AdmZip("data/nseeqbhav.zip"), zipEntries = zip.getEntries(); zip.extractAllTo(/*target path*/"data/unzip/", /*overwrite*/true); 

我试图结束stream,但没有成功。

 out.end(); out.destroy(); 

提前致谢。

您正在尝试在完全写入之前读取文件。 你需要等待写完。

 var http = require('http'), fs = require('fs'), request = require('request'), AdmZip = require('adm-zip'), out = fs.createWriteStream('data/nseeqbhav.zip'); // For saving NSE Equity bhavcopy // Downloading NSE Bhavcopy var req = request( { method: 'GET', uri: 'http://www.nseindia.com/content/historical/EQUITIES/2012/DEC/cm19DEC2012bhav.csv.zip', headers: { "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11", "Referer": "http://www.nseindia.com/products/content/all_daily_reports.htm", "Accept-Encoding": "gzip,deflate,sdch", "encoding": "null", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Cookie": "cookie" } } ); req.pipe(out); req.on('end', function() { var zip = new AdmZip("data/nseeqbhav.zip"), zipEntries = zip.getEntries(); zip.extractAllTo(/*target path*/"data/unzip/", /*overwrite*/true); });