Dans le monde du développement Web, la gestion des téléchargements de fichiers est une exigence courante. Qu'il s'agisse de photos de profil, de documents ou d'images, de nombreuses applications doivent télécharger et stocker des fichiers de manière sécurisée et efficace. Lorsque vous utilisez Node.js avec Express, Multer est l'une des meilleures bibliothèques disponibles pour gérer cette tâche en douceur.
Dans ce blog, nous aborderons tout ce que vous devez savoir sur l'utilisation de Multer dans Node.js, y compris l'installation, la configuration, les options de stockage, le filtrage de fichiers et les cas d'utilisation courants avec des exemples de code.
Multer est un middleware pour gérer les données multipart/form, un format couramment utilisé pour télécharger des fichiers dans des applications Web. Il est spécialement conçu pour fonctionner avec Express et aide à gérer les téléchargements de fichiers en fournissant :
Pour démarrer avec Multer, installez-le via npm :
npm install multer
Commençons par configurer un gestionnaire de téléchargement de fichiers de base à l'aide de Multer dans une application Express. Voici comment commencer :
const express = require('express'); const multer = require('multer'); const app = express(); // Configure Multer for basic usage const upload = multer({ dest: 'uploads/' }); // Destination folder for uploaded files // Single File Upload Route app.post('/upload', upload.single('file'), (req, res) => { res.send('File uploaded successfully!'); }); app.listen(3000, () => console.log('Server running on port 3000'));
Dans cet exemple :
Multer propose deux options de stockage principales :
Le stockage sur disque offre plus de contrôle sur la dénomination des fichiers et les chemins de destination.
npm install multer
Dans le stockage en mémoire, les fichiers sont stockés sous forme de tampons, ce qui est utile pour les fichiers de courte durée ou pour gérer les téléchargements sans enregistrer les fichiers sur le disque.
const express = require('express'); const multer = require('multer'); const app = express(); // Configure Multer for basic usage const upload = multer({ dest: 'uploads/' }); // Destination folder for uploaded files // Single File Upload Route app.post('/upload', upload.single('file'), (req, res) => { res.send('File uploaded successfully!'); }); app.listen(3000, () => console.log('Server running on port 3000'));
Pour les applications de production, stocker les fichiers directement sur un stockage cloud (comme AWS S3) est souvent préférable. Pour intégrer S3, utilisez multer-s3.
const storage = multer.diskStorage({ destination: (req, file, cb) => cb(null, 'uploads/'), // Folder location filename: (req, file, cb) => { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); cb(null, uniqueSuffix + '-' + file.originalname); } }); const upload = multer({ storage: storage });
const upload = multer({ storage: multer.memoryStorage() });
Cette configuration téléchargera les fichiers directement dans le compartiment S3 spécifié, en contournant le stockage local.
Vous pouvez filtrer les fichiers par type pour accepter uniquement des formats de fichiers spécifiques (par exemple, des images). Utilisez l'option fileFilter.
npm install aws-sdk multer-s3
Pour empêcher le téléchargement de fichiers volumineux, définissez une option de limites. Voici comment limiter la taille du fichier à 1 Mo :
const aws = require('aws-sdk'); const multerS3 = require('multer-s3'); aws.config.update({ region: 'your-region' }); const s3 = new aws.S3(); const upload = multer({ storage: multerS3({ s3: s3, bucket: 'your-s3-bucket-name', metadata: (req, file, cb) => cb(null, { fieldName: file.fieldname }), key: (req, file, cb) => cb(null, Date.now().toString() + '-' + file.originalname) }) });
Multer prend également en charge plusieurs téléchargements de fichiers :
const fileFilter = (req, file, cb) => { // Accept only image files if (file.mimetype.startsWith('image/')) { cb(null, true); // Accept file } else { cb(new Error('Only image files are allowed!'), false); // Reject file } }; const upload = multer({ storage: storage, fileFilter: fileFilter });
Une gestion appropriée des erreurs est cruciale pour une expérience utilisateur fluide. Multer peut générer plusieurs types d'erreurs, que vous pouvez gérer comme ceci :
const upload = multer({ storage: storage, limits: { fileSize: 1 * 1024 * 1024 } // 1 MB limit });
Voici quelques applications concrètes pour utiliser Multer :
Multer simplifie la gestion des fichiers dans les applications Node.js en fournissant des options de stockage flexibles, le filtrage des fichiers et la gestion de diverses exigences de téléchargement, depuis des fichiers uniques jusqu'à plusieurs fichiers. Que vous créiez une petite application ou une application de production avec des besoins de gestion de fichiers, Multer a ce qu'il vous faut.
Bon codage ! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!