Das Herunterladen von Dateien in den lokalen Speicher, anstatt sie im Cloud-Speicher zu speichern, hat mehrere Vorteile. Dazu gehören einfacherer Zugriff, Zugriff ohne Internetverbindung und vollständiges Eigentum an Ihren Daten.
Sie können einzelne und mehrere Dateien mit integrierten Node.js-Modulen herunterladen. Sie können stattdessen auch eine Bibliothek eines Drittanbieters verwenden, um die gleichen Ergebnisse zu erzielen.
Herunterladen von Dateien ohne Bibliothek eines Drittanbieters
Um eine Datei mit Node.js ohne die Hilfe von Drittanbieterpaketen herunterzuladen, benötigen Sie drei Node.js-Kernmodule: fs, https, Und Weg.
Der fs -Modul unterstützt viele Dateiaufgaben, einschließlich Lesen, Erstellen, Aktualisieren, Entfernen und Umbenennen. Der https -Modul erstellt einen Webserver, um Anforderungen zu verarbeiten und Antworten zu liefern. Der
Weg -Modul bietet eine Möglichkeit, mit Verzeichnis- und Dateipfaden zu interagieren.Mit diesen Modulen können Sie eine HTTP-GET-Anforderung senden, um von einem Webserver auf eine Dateiressource zuzugreifen, und dann eine Kopie der Ressource in Ihrem lokalen System erstellen.
Importieren Sie zunächst die erforderlichen Module:
konst https = erfordern('https');
konst fs = erfordern('fs');
konst Pfad = erfordern('Weg');
Sie müssen den Dateinamen aus der URL als guten Standardnamen verwenden, um ihn zu speichern. Sie können die des Pfadmoduls verwenden .Basisname() Methode, um den Namen einer Datei von ihrer URL zu erhalten. Diese Methode nimmt ein Pfadargument und gibt den letzten Teil eines Pfads zurück.
Zum Beispiel:
konst Dateiname = Pfad.Basisname (URL);
Fordern Sie dann die Datei vom Server an, indem Sie die https.get() Methode. Diese Methode nimmt die URL als erstes Argument und eine Callback-Funktion für die Antwort als zweites Argument
Übergeben Sie die URL variable als erstes Argument und dann eine Callback-Funktion zur Verarbeitung, wenn diese Methode einen Antwortstrom empfängt:
https.get (url, (res) => {
})
In der Rückruffunktion können Sie die verwenden fs.createWriteStream() -Methode zum Erstellen eines neuen beschreibbaren Streams, wobei die Dateinamen Variable als Argument.
Zum Beispiel:
konst fileStream = fs.createWriteStream (Dateiname);
res.Rohr(Datenfluss);
Der createWriteStream() -Methode vereinfacht das Schreiben von Daten in eine Datei, insbesondere wenn Sie mit großen Datenmengen umgehen.
Der Rohr() -Methode sendet dann den GET-Antwortdatenstrom an die Datenfluss Objekt.
Um eine Nachricht in der Konsole zu protokollieren, nachdem das Skript den Download der Datei abgeschlossen hat, fügen Sie eine .An() Ereignissender an die Datenfluss Variable:
fileStream.on('beenden', () => {
Datenfluss.schließen();
Konsole.Protokoll('Download abgeschlossen');
});
Das fileStream-Objekt gibt eine aus beenden Ereignis, wenn alle Daten in die Datei geschrieben wurden. Fangen Sie dies über die .An() -Methode und bieten eine Callback-Funktion zum Schließen der Datenfluss und eine Nachricht an die Konsole protokollieren.
Zur besseren Ausführung u effiziente Wiederverwendbarkeit von Skripten, packen Sie diesen Code in eine Funktion, die die URL als Argument verwendet:
FunktionDownload-Datei(URL) {
konst Dateiname = Pfad.Basisname (URL);https.get (url, (res) => {
konst fileStream = fs.createWriteStream (Dateiname);
res.Rohr(Datenfluss);
fileStream.on('beenden', () => {
Datenfluss.schließen();
Konsole.Protokoll('Download abgeschlossen')
});
})
}
Um die Funktion auszuführen, rufen Sie sie auf und übergeben Sie die URL der Datei, die Sie herunterladen möchten:
Download-Datei([Datei-URL]);
Um das Skript auszuführen, öffnen Sie Ihr Terminal und geben Sie es ein Knoten gefolgt vom Namen der JavaScript-Datei:
Knoten[Skriptname]
Dieses Skript lädt die Datei-URL herunter, die Sie an die übergeben haben Download-Datei() Funktion und speichern Sie sie in Ihrem Arbeitsverzeichnis.
Umgang mit Fehlern beim Herunterladen von Dateien
In Node.js können beim Herunterladen von Dateien bestimmte Fehler wie das Schreiben in den Stream, eine schlechte Dienstverbindung oder Probleme mit der Datei selbst auftreten. Es ist wichtig, Fehlermeldungen zu protokollieren, wenn diese Fehler auftreten, um das Problem angehen zu können.
Try/Catch-Block
Ein Try-Catch-Block ist eine Programmierstruktur, mit der Sie potenzielle Fehler und Ausnahmen in Ihrem Code behandeln können.
Die try-and-catch-Blöcke bilden den try...catch-Block. Der Code des try-Blocks wird zuerst ausgeführt, und der Code des catch-Blocks wird ausgeführt, wenn der try-Block eine Ausnahme auslöst.
versuchen {
Download-Datei([Datei-URL]);
} fangen (Fehler) {
Konsole.log (Fehler);
}
Verwenden Sie einen Try/Catch-Block, um sicherzustellen, dass Sie alle Download-bezogenen Fehler abfangen können. Sie können dann jeden Fehler nach Bedarf behandeln, z. B. ihn in der Konsole protokollieren oder den Download wiederholen.
Statuscode der HTTP-Antwort
Statuscodes für HTTP-Antworten zeigen an, ob eine bestimmte HTTP-Anforderung erfolgreich ausgeführt wurde.
Zum Beispiel:
https.get (url, (res) => {
konst Code = res.statusCode();
Konsole.log (Code)
konst fileStream = fs.createWriteStream (Dateiname);
});
Wenn die Anfrage einen Statuscode außerhalb des Erfolgsbereichs zurückgibt, 200-299, gab es ein Problem mit der Anfrage. Überprüfen Sie dann den HTTP-Statuscode Schlagen Sie die Bedeutung des Statuscodes nach um den Fehler gegebenenfalls zu beheben.
Herunterladen mehrerer Dateien
Sie können mehrere Dateien gleichzeitig herunterladen, indem Sie die Datei-URLs beim Ausführen als Argumente übergeben Knoten [Skriptname]. Um diese Aufgabe auszuführen, müssen Sie bestimmte Teile Ihres Skripts ändern.
In JavaScript werden Argumente neben dem übergeben Knoten -Befehl sind in process.argv verfügbar, einer Eigenschaft des globalen Node.js-Objekts. Diese Eigenschaft gibt ein Array der Befehlszeilenargumente zurück. Das erste Element in diesem Array sollte sein Knoten, der eigentliche Befehl, den Sie ausführen. Das zweite ist der Dateiname des Skripts, dann sollte jedes folgende Argument eine URL sein.
Um mehrere Dateien gleichzeitig herunterzuladen, speichern Sie das Array von Prozess.argv in einer Variablen. Führen Sie dann die Methode slice() aus, um die ersten beiden Elemente zu entfernen, die keine URLs sind:
konst args = process.argv;
konst urls = args.slice(2);
Der Scheibe() -Methode erstellt ein neues Array aus ausgewählten Elementen in einem Array. Diese Methode wählt von einem angegebenen Start bis zu einem angegebenen (nicht inklusiven) Ende aus.
In diesem Fall entfernt das Übergeben eines Werts von 2 die Knoten Befehlsname und Ihr Skriptdateiname.
Endlich, mit der Map-Methode von JavaScript, übergeben Sie jedes Element in der URLs Array zu Download-Datei():
urls.map(URL =>{
downloadDatei (URL)
});
Um den Code auszuführen, geben Sie die Knoten Befehl zusammen mit dem Namen Ihrer JavaScript-Datei und den URLs, die Sie herunterladen möchten:
Knoten[Skriptname]url1url2url3
Verwenden einer Bibliothek eines Drittanbieters
Sie können Dateien auch mit einer Bibliothek eines Drittanbieters wie npm herunterladen herunterladen Paket.
Führen Sie in Ihrem Skriptverzeichnis den folgenden npm-Befehl aus, um die herunterladen Paket:
npm Installieren herunterladen
Fordern Sie das heruntergeladene Paket in Ihrem Skript an und speichern Sie dann die Befehlszeilenargumente in einem Array:
konst herunterladen = erfordern('herunterladen');
konst args = process.argv;
konst urls = args.slice(2);
Sie können jetzt die verwenden herunterladen Bibliothek zum Herunterladen von Dateien. Sie können dies je nach Ihrem speziellen Ziel auf verschiedene Arten tun.
Zum Beispiel:
asynchronFunktionDownload-Datei(URLs){
erwartenVersprechen.all (urls.map((URL) => herunterladen (URL, "Dateien")))
};
downloadFile (URLs);
Deklarieren Sie die Download-Datei funktionieren als asynchron, und erstellen Sie eine Versprechen zu warten, bis die jeweilige Aufgabe mit dem abgeschlossen ist erwarten Stichwort. Karte der URLs Array zum herunterladen Funktion und übergeben Sie den Namen eines lokalen Ordners—"Dateien", in diesem Fall – um die Dateien darin zu speichern.
Herunterladen von Dateien in das lokale Dateisystem
Die integrierten Funktionen von Node, wie fs und https, machen es einfach, einen Datei-Downloader zu schreiben. Um es noch einfacher zu machen, können Sie ein Drittanbietermodul wie Download verwenden.
Mit beiden Methoden können Sie Dateien von einem Remote-Server herunterladen und im lokalen Dateisystem speichern. Sie sollten die beste Methode für Ihre Anforderungen auswählen und sie in Ihrer nächsten Node.js-Anwendung verwenden.