Maxy.fr

Débuter avec Node.js : Uploader simplement un fichier sur votre serveur

Il est possible de gérer la réception de fichiers en Node.JS à l’aide du module Express.

Dans un premier temps si vous n’avez pas déjà installé ce module, faite le à l’aide de la commande suivante, en ayant pris soin de vous placer dans le dossier où se trouve vos fichiers serveur node.

npm install express

Une fois ce module installé, voici le code complet du fichier serveur permettant la gestion de l’upload de fichiers :

var express = require('express');
 
var app = express();
app.use(express.bodyParser({ keepExtensions: true, uploadDir:'./uploads'}));
 
app.get('/', function(req, res) {
     res.setHeader('Content-Type', 'text/html');
     res.end(
     '<form action="/upload" method="post" enctype="multipart/form-data">'+
     '<input type="file" name="uploadfile">'+
     '<input type="submit" value="Envoyer">'+
     '</form>'
 );
});
 
app.post('/upload', function(req, res) {
     res.setHeader('Content-Type', 'text/html');
     res.end(req.files.uploadfile.path);
});
 
app.listen(8000);

Explications :

  • Ligne 1 : Permet d’indiquer que l’on souhaite utiliser le module Express
  • Ligne 4 : On indique ici à l’aide du « bodyParser » le dossier d’enregistrement des fichiers ("uploadDir:’./uploads’") et le fait que l’on souhaite que l’extension d’origine du fichier reste ("keepExtensions: true"). Attention l’utilisation de bodyParser est obligatoire pour ce code (les paramètres sont eux facultatifs).
  • Ligne 6 à 14 : Création de la page HTML contenant le formulaire d’envoi du fichier. Il sera accessible à la racine du site, à l’adresse http://votredomaine:port/.
  • Ligne 16 à 19 : C’est la page sur laquelle nous renvoi le formulaire précédent, elle affichera le dossier ainsi que le nom du fichier envoyé (/uploads/fichier.extension).
  • Ligne 21 : Le port utilisé.

Vos fichiers seront envoyé sur le serveur avec un nom différent de celui d’origine. Le nom d’origine est accessible depuis « req.files.uploadfile.originalFilename » de l’objet « req » utilisé à la ligne 18.

Aperçu de l’objet « req » de la ligne 18 :

capture 2013-11-11 à 01.03.18

Categories : Node.JS

By Guillaume - 11/11/2013 at 11:20 pm

Shar this article :

Similar articles

Finding and Stopping a Lingering Node.js Instance

If you've been playing around with Node.js, you've probably run a Node.js file and left it running in the background. You may be accustomed to using the shortcut ctrl + c (cmd + c) or ctrl + z (cmd + z) to suspend or stop its process. However, if you've closed the terminal with your SSH connection...

Automatically Start Node.js on Server Boot

If you've ever created programs using Node.js, you've probably encountered this issue: Node.js scripts don't automatically restart when you reboot your server. Therefore, you need to manually reconnect to restart them, which can be quite inconvenient. Here's a small shell script that allows you to...