Maison  >  Article  >  interface Web  >  Comment télécharger des fichiers dans nodejs

Comment télécharger des fichiers dans nodejs

王林
王林original
2023-05-27 20:43:051363parcourir

Dans Node.js, vous pouvez utiliser les modules node-fetch et fs pour télécharger des fichiers. Voici comment utiliser ces deux modules pour télécharger des fichiers.

Vous devez d’abord installer les modules node-fetch et fs. Vous pouvez utiliser la commande npm pour installer :

npm install node-fetch fs

Une fois l'installation terminée, vous pouvez utiliser ces deux modules.

Téléchargement de fichiers

Le processus de téléchargement de fichiers peut être divisé en plusieurs étapes :

  1. Envoyer une requête HTTP pour obtenir les données du fichier
  2. Écrire les données dans un fichier

Voici un exemple de code pour télécharger un fichier :

const fetch = require('node-fetch');
const fs = require('fs');

const downloadFile = async (url, dest) => {
  const response = await fetch(url);

  if (!response.ok) {
    throw new Error(`failed to download file: ${response.statusText}`);
  }

  const fileStream = fs.createWriteStream(dest);
  await new Promise((resolve, reject) => {
    response.body.pipe(fileStream);
    response.body.on("error", (err) => {
      reject(err);
    });
    fileStream.on("finish", function() {
      resolve();
    });
  });
};

const fileUrl = 'https://example.com/files/file.txt';
const destPath = 'file.txt';

downloadFile(fileUrl, destPath)
  .then(() => {
    console.log('file downloaded successfully');
  })
  .catch((err) => {
    console.error('failed to download file:', err);
  });

Ce code Utilisez d'abord le module node-fetch pour envoyer une requête HTTP afin d'obtenir les données du fichier, puis utilisez le module fs pour écrire les données dans le fichier. Il convient de noter que lors du processus d'obtention des données du fichier, vous devez vérifier si le code d'état de la réponse HTTP est 200. Sinon, le téléchargement a échoué.

Le code utilise la syntaxe asynchrone async/wait et les objets Promise pour garantir que les données du fichier sont écrites avant la sortie du résultat.

Plus d'options

L'exemple de code ci-dessus n'est qu'un exemple simple de téléchargement d'un fichier, si vous avez besoin de plus d'options et de fonctions, vous pouvez ajuster le code avec d'autres paramètres.

  1. Spécifier les en-têtes de requête HTTP

Vous pouvez utiliser le paramètre headers de node-fetch pour spécifier les en-têtes de requête HTTP, par exemple :

const headers = {
  'Authorization': 'Bearer ' + token,
  'Content-Type': 'application/json'
};
const response = await fetch(url, {
  headers: headers
});
  1. Limiter la vitesse de téléchargement

Si vous devez limiter la vitesse de téléchargement, vous pouvez utilisez le module tiers speedline, par exemple :

const speedline = require('speedline');

const fileUrl = 'https://example.com/files/file.txt';
const destPath = 'file.txt';
const maxSpeed = 100; // 100 KB/s

const response = await fetch(fileUrl);
const stream = response.body;
const fileStream = fs.createWriteStream(destPath);
await speedline(stream.pipe(fileStream), maxSpeed);
  1. Mise en cache des fichiers téléchargés

Si vous devez mettre en cache les fichiers téléchargés, vous pouvez utiliser le module tiers node-cache, par exemple :

const NodeCache = require('node-cache');
const fileCache = new NodeCache();

const downloadFile = async (url, dest) => {
  const cachedData = fileCache.get(url);
  if (cachedData) {
    return fs.writeFileSync(dest, cachedData);
  }
  
  const response = await fetch(url);

  if (!response.ok) {
    throw new Error(`failed to download file: ${response.statusText}`);
  }

  const fileData = await response.text();

  fileCache.set(url, fileData);
  fs.writeFileSync(dest, fileData);
};

Ce qui précède est les connaissances de base et un exemple de code pour le téléchargement de fichiers Node.js. En fonction des besoins réels et de l'environnement réseau, vous pouvez choisir les paramètres et les méthodes qui vous conviennent pour télécharger des fichiers.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn