Le téléchargement de fichiers sur le stockage local plutôt que de les conserver dans le stockage en nuage présente plusieurs avantages. Il s'agit notamment d'un accès simplifié, d'un accès sans connexion Internet et d'une propriété complète de vos données.
Vous pouvez télécharger des fichiers uniques et multiples à l'aide des modules Node.js intégrés. Vous pouvez également utiliser une bibliothèque tierce à la place, pour obtenir les mêmes résultats.
Téléchargement de fichiers sans bibliothèque tierce
Pour télécharger un fichier à l'aide de Node.js, sans l'aide de packages tiers, vous aurez besoin de trois modules Node.js principaux: fs, https, et chemin.
Le fs prend en charge de nombreuses tâches de fichiers, notamment lire, créer, mettre à jour, supprimer et renommer. Le https module crée un serveur Web pour gérer les demandes et fournir des réponses. Le
chemin Le module fournit un moyen d'interagir avec les chemins de répertoire et de fichier.À l'aide de ces modules, vous pouvez envoyer une requête HTTP GET pour accéder à une ressource de fichier à partir d'un serveur Web, puis effectuer une copie de la ressource dans votre système local.
Pour commencer, importez les modules requis :
constante https = exiger('https');
constante fs = exiger('fs');
constante chemin = exiger('chemin');
Vous devrez utiliser le nom de fichier de l'URL comme bon nom par défaut pour l'enregistrer. Vous pouvez utiliser les .basename() méthode pour obtenir le nom d'un fichier à partir de son URL. Cette méthode prend un argument de chemin et renvoie la dernière partie d'un chemin.
Par exemple:
constante filename = path.basename (url);
Ensuite, demandez le fichier au serveur en appelant le https.get() méthode. Cette méthode prend l'URL comme premier argument et une fonction de rappel pour la réponse comme deuxième argument
Passe le URL variable comme premier argument, puis une fonction de rappel pour le traitement lorsque cette méthode reçoit un flux de réponse :
https.get (url, (res) => {
})
Dans la fonction de rappel, vous pouvez utiliser la fs.createWriteStream() méthode pour créer un nouveau flux inscriptible, en passant la nom de fichier variable comme argument.
Par exemple:
constante fileStream = fs.createWriteStream (nom de fichier);
res.tuyau(fileStream);
Le createWriteStream() La méthode facilite le processus d'écriture de données dans un fichier, en particulier lorsque vous manipulez de gros volumes de données.
Le tuyau() envoie ensuite le flux de données de réponse GET au fileStream objet.
Pour consigner un message dans la console une fois que le script a terminé de télécharger le fichier, joignez un .sur() émetteur d'événements au fileStream variable:
fileStream.on('finir', () => {
fileStream.fermer();
console.enregistrer('Téléchargement terminé');
});
L'objet fileStream émet un finir événement lorsqu'il a écrit toutes les données dans le fichier. Attrapez ceci via le .sur() méthode et fournir une fonction de rappel pour fermer la fileStream et enregistrez un message dans la console.
Pour une meilleure exécution et réutilisation efficace des scripts, encapsulez ce code dans une fonction qui prend l'URL comme argument :
fonctiontélécharger un fichier(URL) {
constante filename = path.basename (url);https.get (url, (res) => {
constante fileStream = fs.createWriteStream (nom de fichier);
res.tuyau(fileStream);
fileStream.on('finir', () => {
fileStream.fermer();
console.enregistrer('Téléchargement terminé')
});
})
}
Pour exécuter la fonction, appelez-la et transmettez l'URL du fichier que vous souhaitez télécharger :
télécharger un fichier([URL du fichier]);
Pour exécuter le script, ouvrez votre terminal et entrez nœud suivi du nom du fichier JavaScript :
nœud[nom du script]
Ce script téléchargera l'URL du fichier que vous avez transmis au télécharger un fichier() fonction et enregistrez-la dans votre répertoire de travail.
Gestion des erreurs lors du téléchargement de fichiers
Dans Node.js, des erreurs spécifiques telles que l'écriture dans le flux, une mauvaise connexion au service ou des problèmes avec le fichier lui-même peuvent survenir lors du téléchargement de fichiers. Il est crucial de consigner les messages d'erreur lorsque ces erreurs se produisent pour pouvoir résoudre le problème.
Essayer/attraper le bloc
Un bloc try-catch est une structure de programmation qui vous permet de gérer les erreurs et les exceptions potentielles dans votre code.
Les blocs try-and-catch constituent le bloc try...catch. Le code du bloc try s'exécute en premier et le code du bloc catch s'exécute si le bloc try lève une exception.
essayer {
télécharger un fichier([URL du fichier]);
} attraper (erreur) {
console.log (erreur);
}
Utilisez un bloc try/catch pour vous assurer que vous pouvez intercepter toutes les erreurs liées au téléchargement. Vous pouvez ensuite gérer toute erreur si nécessaire, par exemple en l'enregistrant sur la console ou en réessayant le téléchargement.
Code d'état de la réponse HTTP
Les codes d'état des réponses HTTP indiquent si une requête HTTP particulière a été exécutée avec succès.
Par exemple:
https.get (url, (res) => {
constante code = res.statusCode();
console.log (code)
constante fileStream = fs.createWriteStream (nom de fichier);
});
Si la demande renvoie un code d'état en dehors de la plage de réussite, 200-299, il y a eu un problème avec la demande. Vérifiez le code d'état HTTP, puis rechercher la signification du code d'état pour traiter l'erreur si nécessaire.
Téléchargement de plusieurs fichiers
Vous pouvez télécharger plusieurs fichiers simultanément en transmettant les URL des fichiers comme arguments lors de l'exécution noeud [nom du script]. Pour effectuer cette tâche, vous devez modifier certaines parties de votre script.
En JavaScript, les arguments passés avec le nœud sont disponibles dans process.argv, une propriété de l'objet global Node.js. Cette propriété renvoie un tableau des arguments de la ligne de commande. Le premier élément de ce tableau doit être nœud, la commande réelle que vous exécutez. Le second sera le nom du fichier de script, puis chaque argument suivant doit être une URL.
Pour télécharger plusieurs fichiers à la fois, enregistrez le tableau à partir de processus.argv dans une variable. Exécutez ensuite la méthode slice() pour supprimer les deux premiers éléments, qui ne sont pas des URL :
constante args = process.argv ;
constante urls = args.tranche(2);
Le tranche() La méthode crée un nouveau tableau à partir des éléments sélectionnés dans un tableau. Cette méthode sélectionne d'un début spécifié à une fin spécifiée (non inclusive).
Dans ce cas, passer la valeur 2 supprime le nœud nom de la commande et votre nom de fichier de script.
Enfin, en utilisant la méthode map de JavaScript, passez chaque élément dans le URL tableau à télécharger un fichier():
urls.map(URL =>{
downloadFile (url)
});
Pour exécuter le code, entrez le nœud commande avec le nom de votre fichier JavaScript et les URL que vous souhaitez télécharger :
nœud[nom du script]URL1URL2URL3
Utilisation d'une bibliothèque tierce
Vous pouvez également télécharger des fichiers à l'aide d'une bibliothèque tierce comme le npm télécharger emballer.
Dans votre répertoire de script, exécutez la commande npm suivante pour installer le télécharger emballer:
npm installer télécharger
Exigez le package téléchargé dans votre script, puis enregistrez les arguments de ligne de commande dans un tableau :
constante télécharger = exiger('télécharger');
constante args = process.argv ;
constante urls = args.tranche(2);
Vous pouvez maintenant utiliser le télécharger bibliothèque pour télécharger des fichiers. Vous pouvez le faire de plusieurs manières en fonction de votre objectif particulier.
Par exemple:
asynchronefonctiontélécharger un fichier(URL){
attendrePromesse.all (urls.map((URL) => télécharger (url, "des dossiers")))
};
downloadFile (urls);
Déclarez le télécharger un fichier fonctionne comme asynchrone, et créer un Promesse attendre que la tâche particulière soit terminée avec le attendre mot-clé. Cartographier le URL tableau à la télécharger fonction et passez le nom d'un dossier local—"des dossiers", dans ce cas, pour y stocker les fichiers.
Téléchargement de fichiers sur le système de fichiers local
Les fonctions intégrées de Node, comme fs et https, facilitent l'écriture d'un téléchargeur de fichiers. Pour le rendre encore plus simple, vous pouvez utiliser un module tiers comme download.
Les deux méthodes vous permettent de télécharger des fichiers à partir d'un serveur distant et de les enregistrer dans le système de fichiers local. Vous devez choisir la meilleure méthode pour vos besoins et l'utiliser dans votre prochaine application Node.js.