Ich versuche, eine recht einfache Aufgabe zu erledigen, aber ich bin ein wenig verwirrt und habe mich in nodejs mit zlib festgefahren. Ich baue Funktionalität, die mich einschließt, die Datei von aws S3 herunter zu laden, die gziped ist, es entzippend und es Zeile für Zeile lesend. Ich möchte all das mit Streams erreichen, da ich glaube, dass dies in nodejs möglich ist.Wie zum Gunzip Stream in Nodejs?
Hier ist meine aktuelle Code-Basis:
//downloading zipped file from aws s3:
//params are configured correctly to access my aws s3 bucket and file
s3.getObject(params, function(err, data) {
if (err) {
console.log(err);
} else {
//trying to unzip received stream:
//data.Body is a buffer from s3
zlib.gunzip(data.Body, function(err, unzippedStream) {
if (err) {
console.log(err);
} else {
//reading line by line unzziped stream:
var lineReader = readline.createInterface({
input: unzippedStream
});
lineReader.on('line', function(lines) {
console.log(lines);
});
}
});
}
});
ich einen Fehler zu sagen:
readline.js:113
input.on('data', ondata);
^
TypeError: input.on is not a function
Ich glaube, ein Problem in unzipping Prozess sein könnte, aber ich bin nicht sicher, was ist falsch, jede Hilfe wäre willkommen.
Das in der Tat arbeitete .. alles in einer Zeile statt 3 Funktionen hatte ich .. alles, was ich tun musste, war hinzufügen .crea teReadStream() wie in 's3.getObject (params) .createReadStream(). pipe (zlib.createGunzip())' und es hat perfekt funktioniert. Jetzt muss ich nur eine Fehlerbehandlung einbeziehen, DANKE SIR! – Tomas
das funktioniert nicht: 'TypeError: s3.getObject (...). Pipe ist keine Funktion' – loretoparisi
@loretoparisi Ich denke, die API hat sich geändert, versuchen' s3.getObject (...). CreateReadStream(). Pipe() ' – robertklep