Maison  >  Article  >  interface Web  >  nodejs implémente le téléchargement de fichiers http

nodejs implémente le téléchargement de fichiers http

王林
王林original
2023-05-27 17:48:381244parcourir

Node.js est un environnement d'exécution JavaScript open source et multiplateforme qui permet au code JavaScript de s'exécuter côté serveur. Dans Node.js, nous pouvons facilement créer un simple serveur http via le module http et réaliser la fonction de téléchargement de fichiers en lisant les fichiers locaux. Cet article explique comment utiliser Node.js pour implémenter le téléchargement de fichiers http.

  1. Créer un serveur http

Vous pouvez créer un serveur http très facilement grâce au module http de Node.js, le code est le suivant :

const http = require('http');

const server = http.createServer((req, res) => {
  console.log('Request received');
});

server.listen(3000, () => {
  console.log('Server started on port 3000');
});

Ce code crée un serveur http qui écoute les requêtes sur le port 3000. Lorsque le serveur reçoit une requête, « Demande reçue » est affiché sur la console.

  1. Gestion des requêtes http

Pour implémenter la fonction de téléchargement de fichiers, nous devons obtenir l'URL demandée dans le gestionnaire de requêtes et la traiter en fonction l'URL de la requête pour déterminer le fichier à télécharger. Le code est le suivant :

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
  console.log('Request received');

  const fileUrl = req.url.slice(1);
  const filePath = `./${fileUrl}`;

  fs.stat(filePath, (err, stats) => {
    if (err) {
      res.statusCode = 404;
      res.end('File not found');
      return;
    }

    fs.readFile(filePath, (err, data) => {
      if (err) {
        res.statusCode = 500;
        res.end('Error reading file');
        return;
      }

      res.setHeader('Content-Disposition', `attachment; filename=${fileUrl}`);
      res.setHeader('Content-Type', 'application/octet-stream');
      res.setHeader('Content-Length', stats.size);
      res.end(data);
    });
  });
});

server.listen(3000, () => {
  console.log('Server started on port 3000');
});

Dans ce code, nous obtenons le nom du fichier à partir de l'URL demandée et déterminons le chemin du fichier en fonction du nom du fichier. Ensuite, nous utilisons la méthode stat du module fs pour vérifier si le fichier existe. Si le fichier n'existe pas, nous envoyons une réponse 404 au client et renvoyons un message « Fichier introuvable ». Si le fichier existe mais qu'une erreur se produit lors de la lecture du contenu du fichier, nous envoyons une réponse 500 au client et renvoyons un message « Erreur de lecture du fichier ». Si tout va bien, nous définissons les en-têtes de réponse et envoyons le contenu du fichier au client.

  1. Test de la fonction de téléchargement

Nous pouvons saisir 'http://localhost:3000/file.txt' dans le navigateur, où fichier . txt est le nom du fichier à télécharger. Si le fichier existe, le serveur le téléchargera.

Summary

Dans cet article, nous présentons comment implémenter le téléchargement de fichiers http via Node.js. Nous avons créé un serveur http pour gérer les demandes des clients, lire les fichiers locaux via le module fs et les envoyer au client en tant que contenu de réponse. Cet exemple fournit un moyen très simple de fournir une fonctionnalité de téléchargement de fichiers au client, mais en pratique, nous souhaiterons peut-être envisager de mettre en œuvre une gestion des téléchargements plus pratique, telle que des limites de taille de fichier, des limites de vitesse de téléchargement et de vérifier si le fichier est un fichier légal. . attendez.

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