Télécharger des fichiers Node.js


Le formidable module

Il existe un très bon module pour travailler avec les téléchargements de fichiers, appelé "Formidable".

Le module Formidable peut être téléchargé et installé à l'aide de NPM :

C:\Users\Your Name>npm install formidable

Après avoir téléchargé le module Formidable, vous pouvez inclure le module dans n'importe quelle application :

var formidable = require('formidable');

Télécharger des fichiers

Vous êtes maintenant prêt à créer une page Web dans Node.js qui permet à l'utilisateur de télécharger des fichiers sur votre ordinateur :

Étape 1 : Créer un formulaire de téléchargement

Créez un fichier Node.js qui écrit un formulaire HTML, avec un champ de téléchargement :

Exemple

Ce code produira un formulaire HTML :

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
  res.write('<input type="file" name="filetoupload"><br>');
  res.write('<input type="submit">');
  res.write('</form>');
  return res.end();
}).listen(8080);

Étape 2 : Analyser le fichier téléchargé

Incluez le module Formidable pour pouvoir analyser le fichier téléchargé une fois qu'il atteint le serveur.

Lorsque le fichier est téléchargé et analysé, il est placé dans un dossier temporaire sur votre ordinateur.

Exemple

Le fichier sera téléchargé et placé dans un dossier temporaire :

var http = require('http');
var formidable = require('formidable');

http.createServer(function (req, res) {
  if (req.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      res.write('File uploaded');
      res.end();
    });
  } else {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    res.write('<input type="file" name="filetoupload"><br>');
    res.write('<input type="submit">');
    res.write('</form>');
    return res.end();
  }
}).listen(8080);


Étape 3 : Enregistrer le fichier

Lorsqu'un fichier est téléchargé avec succès sur le serveur, il est placé dans un dossier temporaire.

Le chemin d'accès à ce répertoire se trouve dans l'objet "files", passé en troisième argument dans la parse()fonction de rappel de la méthode.

Pour déplacer le fichier dans le dossier de votre choix, utilisez le module File System, et renommez le fichier :

Exemple

Incluez le module fs et déplacez le fichier dans le dossier actuel :

var http = require('http');
var formidable = require('formidable');
var fs = require('fs');

http.createServer(function (req, res) {
  if (req.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      var oldpath = files.filetoupload.filepath;
      var newpath = 'C:/Users/Your Name/' + files.filetoupload.originalFilename;
      fs.rename(oldpath, newpath, function (err) {
        if (err) throw err;
        res.write('File uploaded and moved!');
        res.end();
      });
 });
  } else {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    res.write('<input type="file" name="filetoupload"><br>');
    res.write('<input type="submit">');
    res.write('</form>');
    return res.end();
  }
}).listen(8080);