Guide complet de Dropzone.js
Objectif
- Comprendre ce qu’est Dropzone.js et pourquoi l’utiliser
- Apprendre l’installation, l’utilisation de base et la personnalisation étape par étape
- Fournir des exemples de code concrets et des astuces pratiques
1. Qu’est‑ce que Dropzone.js ?
Dropzone.js est une bibliothèque JavaScript open‑source qui simplifie la mise en place du téléchargement de fichiers HTML5.
- Glisser‑déposer : il suffit de faire glisser un fichier pour lancer le téléchargement.
- Aperçu : les images affichent automatiquement un aperçu miniature.
- Fichiers multiples : plusieurs fichiers peuvent être envoyés en une seule fois.
- Intégration serveur : les fichiers sont envoyés via Ajax et la réponse est traitée côté client.
Pourquoi choisir Dropzone.js ?
- Expérience utilisateur : interface intuitive pour le téléchargement.
- Facilité de développement : pas besoin d’implémenter la logique de téléchargement à partir de zéro.
- Extensibilité : options et événements couvrent la plupart des besoins.

2. Installation
2.1 Utiliser un CDN
La façon la plus simple est d’utiliser un CDN. Ajoutez le code suivant dans votre index.html.
<link rel="stylesheet" href="https://unpkg.com/dropzone@5/dist/min/dropzone.min.css" />
<script src="https://unpkg.com/dropzone@5/dist/min/dropzone.min.js"></script>
Astuce : la dernière version est disponible sur unpkg.
2.2 NPM / Yarn
Si votre projet utilise npm, installez‑le avec la commande suivante.
npm install dropzone
# ou
yarn add dropzone
Après l’installation, importez‑le dans votre code.
import Dropzone from 'dropzone';
Attention : assurez‑vous de définir
Dropzone.autoDiscover = false;pour empêcher l’initialisation automatique.
3. Utilisation de base
3.1 HTML
<form action="/upload" class="dropzone" id="myDropzone"></form>
- L’attribut
actionindique l’URL vers laquelle les fichiers seront envoyés. class="dropzone"permet à Dropzone de reconnaître le formulaire automatiquement.
3.2 JavaScript
Dropzone.autoDiscover = false; // empêcher l’initialisation automatique
const myDropzone = new Dropzone('#myDropzone', {
paramName: 'file', // nom du paramètre attendu par le serveur
maxFilesize: 5, // taille maximale en Mo
acceptedFiles: 'image/*', // types de fichiers autorisés
dictDefaultMessage: 'Glissez‑déposez un fichier ici ou cliquez pour le sélectionner',
init: function () {
this.on('success', function (file, response) {
console.log('Téléchargement réussi :', response);
});
this.on('error', function (file, errorMessage) {
console.error('Échec du téléchargement :', errorMessage);
});
}
});
Options clés
-url: URL de destination (peut remplaceraction).
-maxFiles: nombre maximum de fichiers à télécharger en une fois.
-uploadMultiple: activer le téléchargement multiple.
-autoProcessQueue: envoyer automatiquement les fichiers (ou appelerprocessQueue()manuellement).
4. Personnalisation
4.1 Modifier le style de l’aperçu
Dropzone affiche par défaut une miniature pour les images. Vous pouvez ajuster le style avec du CSS.
/* Ajuster la taille de la miniature */
.dropzone .dz-image img {
width: 100px;
height: 100px;
object-fit: cover;
}
/* Style du nom de fichier */
.dropzone .dz-details .dz-filename {
font-weight: bold;
}
4.2 Communication avec le serveur
Le serveur doit accepter le fichier et renvoyer une réponse JSON. Exemple avec Node.js + Express :
const express = require('express');
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
const app = express();
app.post('/upload', upload.single('file'), (req, res) => {
// Les informations du fichier sont dans req.file
res.json({ success: true, filename: req.file.filename });
});
app.listen(3000, () => console.log('Server running on http://localhost:3000'));
Astuce : le nom du paramètre (
'file') doit correspondre àparamNamedéfini dans Dropzone.
4.3 Supprimer un fichier
Dropzone peut envoyer une requête DELETE pour supprimer un fichier.
const myDropzone = new Dropzone('#myDropzone', {
// ...
dictRemoveFile: 'Supprimer',
init: function () {
this.on('removedfile', function (file) {
// Envoi d’une requête DELETE au serveur
fetch('/delete', {
method: 'DELETE',
body: JSON.stringify({ filename: file.upload.filename }),
headers: { 'Content-Type': 'application/json' }
});
});
}
});
5. Astuces pratiques
| Situation | Solution |
|---|---|
| Limiter le nombre de fichiers | Utiliser l’option maxFiles: 10 |
| Afficher la progression | Écouter l’événement progress |
| Annuler un téléchargement | Appeler la méthode cancelUpload() |
| Réessayer après un échec | Implémenter une logique de réessai dans l’événement error ou utiliser l’option retry |
| Sécurité | Inclure un jeton CSRF dans l’option headers |
6. Conclusion
Dropzone.js offre une interface de téléchargement puissante avec une configuration minimale.
- Installation : CDN ou npm → autoDiscover = false → formulaire HTML + instance JavaScript
- Personnalisation : options, événements et CSS pour adapter l’UI à vos besoins
- Intégration serveur : combinez‑le avec des middlewares comme multer pour stocker les fichiers et renvoyer des réponses JSON
Explorez davantage le téléchargement multiple et la personnalisation de l’aperçu pour améliorer l’expérience utilisateur.
Ressources supplémentaires
- Documentation officielle
- Dépôt d’exemples
Bon codage ! 🚀
Aucun commentaire.