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 :
Catégories : Node.JS
Par Guillaume le 11/11/2013 à 23:20