Ich möchte alle Dateien in der Datenbank als zip-Datei herunterladen.Erstellen Sie mehrere Dateien dynamisch nodejs
Wenn ich nur Element herunterladen möchte, kann ich einfach seinen Header und Inhaltstyp festlegen und kann dann seinen Puffer senden.
db.collection("resource").find({}).toArray(function(err, result) {
res.setHeader('Content-disposition', 'attachment; filename=' + result[0].name);
res.contentType(result[0].mimetype);
res.send(result[0].data.buffer);
}
Jetzt möchte ich einen Ordner erstellen und das jedes result
Element in diesem Ordner dann schicken Sie es hinzufügen.
Der folgende Code gibt nur die erste Datei zurück. Es ist rational, weil ich sofort den Puffer sende.
for(var i=0; i < result.length; i++){
res.setHeader('Content-disposition', 'attachment; filename=' + result[i].name);
res.send(result[i].data.buffer);
}
Ich denke über sie in ein Array hinzuzufügen.
for(var i=0; i < result.length; i++){
var obj = {name: result[i].name, buffer: result[i].data.buffer};
files.push(obj);
}
res.setHeader('Content-disposition', 'attachment; filename=' + "resource");
res.contentType('application/zip');
res.send(files);
Dies ergab mir eine Textdatei resource
die name
und buffer
als JSON-Format enthält.
Auch wenn ich den contentType als Anwendung/zip aktualisieren, wird es als Textformat zurückgegeben.
Wie kann ich diese Dateien erstellen, in einen Ordner hinzufügen und den Ordnertyp als zip festlegen?