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);