Il est fréquent maintenant de recourir au protocole HTML et HTTP pour 'uploader' ou' downloader' des fichiers (video , photo etc.)
source : site du zero |
Nous allons nous intéresser à l'utilisation du module Formidable pour node.js dans le cadre de l'upload (sens client vers serveur)
L'usage d'un serveur node.js est particulièrement adapté à ce type de service. Les connexions sont longues (le temps de transfert), par morceaux (trunk) et avec des temps de latences importants en raison des débits des réseaux.
Aussi le cas d'usage de l'upload est en plein dans le cœur de cible de node.js
Le module formidable |
La commande d'installation est la suivante:
npm install formidable@latest
Avec comme résultat:
npm http GET https://registry.npmjs.org/formidable
npm http 200 https://registry.npmjs.org/formidable
formidable@1.0.11 node_modules/formidable
Le module est livré avec des exemples pour commencer des essais.
Le dialogue client/serveur est fait par le biais d'un formulaire html qui doit avoir les propriétés suivantes:
enctype="multipart/form-data" method="post
Et contenir une balise INPUT de type "file" name="upload" multiple="multiple"
(le code HTML est dans le répertoire 'example' du module)
La requête envoyée au serveur va contenir des tronçons délimités par des 'boundary'.
Un tronçon va contenir les données du fichier à télécharger (l'image, le son ) , un autre contiendra les autres paramètres du formulaire.
Cette dualité se retrouve au niveau des évènements gérés par le module (on 'file' , on 'field')
form.parse(req, function(err, fields, files)
Un exemple complet ici en coffeescript:
Il est souhaitable d'indiquer un répertoire (uploadDir) de réception qui sera par défaut /tmp.
Le fichier sera nommé à l'aide d'une chaîne aléatoire. Le nom d'origine du fichier (celui du poste client) est indiqué qu'a titre indicatif.
Ce module est utilisé en production par des sites de téléchargement professionnels. Il est donc hautement recommandé de l'utiliser à la place de solution interne.
Nous verrons dans un autre post comment utiliser le module 'formidable' avec le framework 'express'
Aucun commentaire:
Enregistrer un commentaire