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

mrk*_*kar 8 unzip download node.js adm-zip

我正在尝试从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);
Run Code Online (Sandbox Code Playgroud)

我试着跟随结束流但没有成功.

out.end();
out.destroy(); 
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Vad*_*hev 8

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

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);
});
Run Code Online (Sandbox Code Playgroud)