Je suis en train de télécharger des fichiers de nseindia.com et de décompresser en mémoire. J'utilise nodejs webkit et adm-zip. Je reçois une erreur sur la console:nodejs télécharger et décompresser le fichier de l'url, erreur No en-tête END trouvé
Non compressé Format zip non valide ou non pris en charge. Pas de tête FIN trouvé
code:
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);
J'ai essayé de mettre fin à la suite du flux, mais sans succès.
out.end();
out.destroy();
Merci d'avance.
Merci Vadim. Ça a marché. Une question, si le fichier téléchargé (que nous décompressons) possède plusieurs zips, comment les extraire nous aussi? Il n'y a pas d'événement "fin" à adm-zip. – mrkanitkar
Dans la mesure où je vois la méthode 'extractAllTo' est synchrone. Il bloque la boucle d'événement jusqu'à ce que l'extraction soit terminée. Vous n'avez donc pas besoin d'un événement 'end' ici. Soyez prudent avec les bibliothèques synchrones. Ce n'est pas node.js et peut provoquer des gels sur highload. –