Ich bin neu in NodeJS. Ich weiß, dass wir Daten mit der Methode pipe() zum Client streamen können. HierWie man einen WriteStream verbindet, der eine Erweiterung verkettet?
ist der Ausschnitt aus dem Code
router.get('/archive/*', function (req, res) {
var decodedURI = decodeURI(req.url);
var dirarr = decodedURI.split('/');
var dirpath = path.join(dir, dirarr.slice(2).join("/"));
console.log("dirpath: " + dirpath);
var archive = archiver('zip', {
zlib: {level: 9} // Sets the compression level.
});
archive.directory(dirpath, 'new-subdir');
archive.on('error', function (err) {
throw err;
});
archive.pipe(res)
archive.on('finish', function() {
console.log("finished zipping");
});
archive.finalize();
});
, wenn ich einen Erhaltungs-Anforderungs die ZIP-Datei heruntergeladen verwenden, aber ohne Verlängerung. Ich weiß es, weil ich einen Writestream in die Antwort einfließen lasse. Gibt es da eh eine Pipe mit einer .zip-Erweiterung? Oder Wie kann ich die Zip-Datei senden, ohne die Zip-Datei auf der Festplatte zu erstellen?
aber ich möchte nicht die Zip-Datei in HDD erstellen. Ich möchte nur das Ergebnis aus dem Archiver-Modul als Antwort pipe –
Bitte lesen Sie die Dokumentation, die ich verlinkte sorgfältig: all diese 'res.attachment' setzt HTTP-Header. – robertklep
Ok, ich habe es. Bevor Sie den Anhang senden, ändern Sie seinen Inhaltstyp und die Inhaltsdisposition richtig? –