Comment télécharger des fichiers avec Node.js – Systeme io

Comment télécharger des fichiers avec Node.js – Systeme io


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, httpset chemin.

Les fs prend en charge de nombreuses tâches de fichiers, notamment lire, créer, mettre à jour, supprimer et renommer. Les https module crée un serveur Web pour gérer les demandes et fournir des réponses. Les 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 :

 const https = require('https');
const fs = require('fs');
const path = require('path');

Vous devrez utiliser le nom de fichier de l’URL comme bon nom par défaut pour l’enregistrer. Vous pouvez utiliser le chemin du module .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 example:

 const 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 example:

 const fileStream = fs.createWriteStream(filename);
res.pipe(fileStream);

Les 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.

Les tuyau() envoie ensuite le flux de données de réponse GET au fileStream chose.

Pour consigner un message dans la console une fois que le script a terminé de télécharger le fichier, joignez un .au() émetteur d’événements au fileStream variable:

 fileStream.on('finish', () => {
  fileStream.close();
  console.log('Download finished');
});

L’objet fileStream émet un terminer événement lorsqu’il a écrit toutes les données dans le fichier. Attrapez ceci via le .au() 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 une réutilisation efficace des scripts, encapsulez ce code dans une fonction qui prend l’URL comme argument :

 function downloadFile(url) {
    const filename = path.basename(url);

    https.get(url, (res) => {
        const fileStream = fs.createWriteStream(filename);
        res.pipe(fileStream);

        fileStream.on('finish', () => {
            fileStream.close();
            console.log('Download finished')
        });
    })
}

Pour exécuter la fonction, appelez-la et transmettez l’URL du fichier que vous souhaitez télécharger :

 downloadFile((file url));

Pour exécuter le script, ouvrez votre terminal et entrez nœud suivi du nom du fichier JavaScript :

 node (script name)

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.

 try {
    downloadFile((file url));
} catch (error) {
    console.log(error);
}

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 example:

 https.get(url, (res) => {
    const code = res.statusCode();
    console.log(code)
    const fileStream = fs.createWriteStream(filename);
});

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 recherchez 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 :

 const args = process.argv;
const urls = args.slice(2);

Les 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 :

 node (script name) url1 url2 url3 

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 forfait.

Dans votre répertoire de script, exécutez la commande npm suivante pour installer le Télécharger forfait:

 npm install download

Exigez le package téléchargé dans votre script, puis enregistrez les arguments de ligne de commande dans un tableau :

 const download = require('download');
const args = process.argv;
const urls = args.slice(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 example:

 async function downloadFile(urls){
await Promise.all(urls.map((url) => download(url, "files")))
};

downloadFile(urls);

Déclarez le télécharger un fichier fonctionne comme asynchroneet 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.

Laisser un commentaire