Passer au contenu du pied de page
AIDE NODE

Multer Node.js (Comment ça marche pour les développeurs)

Gérer les téléchargements de fichiers et produire des documents PDF sont des exigences standard pour de nombreuses applications dans le paysage actuel du développement en ligne. Summing up the capabilities of IronPDF and Multer in a Node.js environment yields a strong solution to effectively handle these requirements.

Multer est un middleware Node.js qui facilite la gestion des multipart/form-data—principalement utilisé pour les téléchargements de fichiers. Grâce à sa grande flexibilité, les développeurs peuvent spécifier des restrictions de taille de fichier, des options de stockage et des filtres de fichier pour garantir des téléchargements de fichiers sûrs et efficaces. Multer est un excellent choix pour les développeurs souhaitant intégrer facilement une fonctionnalité de téléchargement de fichiers dans leurs applications grâce à sa facilité d'intégration avec Express.js.

Inversement, IronPDF est une bibliothèque de création PDF puissante qui permet aux programmeurs de créer des documents PDF à partir de textes HTML. Avec ses nombreuses capacités, y compris le support de l'exécution de JavaScript, le style CSS, et l'intégration de polices et d'images, c'est l'outil parfait pour transformer des informations web dynamiques en PDFs d'apparence professionnelle.

Nous allons démontrer la coopération fluide entre ces deux outils puissants en expliquant comment configurer et utiliser IronPDF pour créer des documents PDF et Multer pour gérer les téléchargements de fichiers dans une application Node.js.

Qu'est-ce que Multer Node.js ?

Multer est un middleware Node.js qui facilite la gestion des multipart/form-data—principalement utilisé pour les téléchargements de fichiers. Il offre une méthode fiable pour gérer les capacités de téléchargement de fichiers dans les applications web et s'intègre facilement avec Express.js. Pour s'assurer que seuls des types de fichiers autorisés sont téléchargés, Multer donne aux développeurs la possibilité de spécifier des restrictions de taille de fichier, de configurer des options de stockage, et d'appliquer un filtre de fichier.

Il offre au serveur une flexibilité dans la gestion des fichiers en supportant à la fois le stockage sur disque et en mémoire. Multer est également parfait pour les formulaires nécessitant de nombreux fichiers à soumettre en même temps car il peut gérer plusieurs fichiers téléchargés simultanément. Tout bien considéré, Multer simplifie le processus de téléchargement de fichiers, renforçant la capacité des applications Node.js à gérer le contenu téléchargé par les utilisateurs de manière sécurisée et efficace.

Multer Node.js (Fonctionnement pour les développeurs) : Figure 1 - Multer Node.js

Fonctionnalités de Multer pour Node.js

Options de stockage de fichiers

  • Multer a la capacité de stocker les fichiers téléchargés directement sur disque. Le moteur de stockage sur disque vous permet de fournir le nom de fichier et le répertoire de destination. C'est particulièrement utile pour les programmes nécessitant que les fichiers soient enregistrés pour une utilisation ultérieure.
  • Stockage en mémoire: Multer a la capacité de stocker des fichiers en mémoire sous forme d'objets tampon pour un usage temporaire. C'est utile dans des cas où les fichiers n'ont pas besoin d'être conservés sur disque et peuvent être traités immédiatement.

Limites de taille de fichiers

Les limitations de taille que Multer vous permet de définir pour les fichiers téléchargés peuvent aider à protéger les performances du serveur et à gérer efficacement les ressources de stockage en empêchant le téléchargement de fichiers trop volumineux. Vous pouvez utiliser l'option limitations pour y parvenir.

Filtrage des fichiers

Multer a une option fileFilter qui vous permet de gérer quels fichiers sont acceptés. Les fichiers qui ne correspondent pas aux exigences peuvent être rejetés par cette fonction, qui peut également vérifier le type MIME du fichier et d'autres attributs. Cela garantit que seuls certains types de fichiers—comme les documents et les images—sont soumis.

Gestion de plusieurs fichiers

Multer peut gérer plusieurs fichiers téléchargés simultanément. Des routes peuvent être configurées pour accepter plusieurs champs contenant des fichiers ou des tableaux de fichiers. C'est utile pour les formulaires où les utilisateurs doivent télécharger plusieurs fichiers à la fois, comme des documents d'accompagnement et des images de profil.

Moteurs de stockage personnalisables

Multer vous permet de concevoir de nouveaux moteurs de stockage en plus des solutions de stockage sur disque et en mémoire intégrées. Pour une flexibilité optimale, vous pouvez créer votre propre logique pour la gestion des téléchargements de fichiers, y compris où et comment les fichiers sont enregistrés.

Intégration facile avec Express

Multer est conçu pour s'intégrer facilement avec Express.js. Il est simple d'ajouter la capacité de téléchargement de fichiers à vos applications web en l'utilisant comme middleware dans vos routes Express.

Gestion automatique des données multipartes

En analysant automatiquement les multipart/form-data, Multer simplifie le processus de gestion des téléchargements de fichiers dans votre code côté serveur en rendant les fichiers téléchargés et les données de formulaire disponibles sur l'objet req.

Téléchargement de fichiers uniques et multiples

Multer propose plusieurs méthodes (single, array, et fields) pour gérer les téléchargements d'un ou plusieurs fichiers. La méthode single gère un fichier par requête, la méthode array supporte plusieurs fichiers avec le même nom de champ, et la méthode fields peut gérer de nombreux fichiers avec différents noms de champs.

Créer et configurer Multer Node.js JS

Les étapes ci-dessous peuvent être utilisées pour construire et configurer Multer dans une application Node.js :

Installer les dépendances

L'installation de Multer et Express est la première étape. npm peut être utilisé pour cela :

npm install multer
npm install express
npm install multer
npm install express
SHELL

Configurer Multer

Configurez Multer pour gérer les téléchargements de fichiers dans votre fichier .js. Voici une illustration détaillée :

const express = require('express');
const multer = require('multer');
const path = require('path');
const fs = require('fs');

// Initialize Express
const app = express();

// Set up storage configuration for Multer
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
    cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); // Unique filename
  }
});

// Configure file filter function to allow only certain file types
const fileFilter = (req, file, cb) => {
  const allowedFileTypes = /jpeg|jpg|png|gif/;
  const mimetype = allowedFileTypes.test(file.mimetype);
  const extname = allowedFileTypes.test(path.extname(file.originalname).toLowerCase());
  if (mimetype && extname) {
    return cb(null, true);
  } else {
    cb(new Error('Only images are allowed!'));
  }
};

// Initialize Multer with storage, file size limit, and file filter options
const upload = multer({
  storage: storage,
  limits: { fileSize: 1024 * 1024 * 5 }, // 5 MB file size limit
  fileFilter: fileFilter
});

// Single file upload route
app.post('/upload-single', upload.single('profilePic'), (req, res) => {
  try {
    res.send('Single file uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Multiple files upload route
app.post('/upload-multiple', upload.array('photos', 5), (req, res) => {
  try {
    res.send('Multiple files uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Error handling middleware
app.use((err, req, res, next) => {
  if (err) {
    res.status(400).send({ error: err.message });
  }
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const express = require('express');
const multer = require('multer');
const path = require('path');
const fs = require('fs');

// Initialize Express
const app = express();

// Set up storage configuration for Multer
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
    cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); // Unique filename
  }
});

// Configure file filter function to allow only certain file types
const fileFilter = (req, file, cb) => {
  const allowedFileTypes = /jpeg|jpg|png|gif/;
  const mimetype = allowedFileTypes.test(file.mimetype);
  const extname = allowedFileTypes.test(path.extname(file.originalname).toLowerCase());
  if (mimetype && extname) {
    return cb(null, true);
  } else {
    cb(new Error('Only images are allowed!'));
  }
};

// Initialize Multer with storage, file size limit, and file filter options
const upload = multer({
  storage: storage,
  limits: { fileSize: 1024 * 1024 * 5 }, // 5 MB file size limit
  fileFilter: fileFilter
});

// Single file upload route
app.post('/upload-single', upload.single('profilePic'), (req, res) => {
  try {
    res.send('Single file uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Multiple files upload route
app.post('/upload-multiple', upload.array('photos', 5), (req, res) => {
  try {
    res.send('Multiple files uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Error handling middleware
app.use((err, req, res, next) => {
  if (err) {
    res.status(400).send({ error: err.message });
  }
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
JAVASCRIPT

Multer Node.js (Fonctionnement pour les développeurs) : Figure 2 - Application Multer Node.js utilisant Multer pour télécharger des fichiers

Configurer le système de stockage

  • destination : Indique le dossier dans lequel les fichiers téléchargés seront stockés.
  • filename : Maintient l'extension de fichier originale tout en créant un nom de fichier unique pour chaque fichier téléchargé basé sur l'horodatage et un nombre aléatoire.
  • Filtre de fichiers : Une option pour vérifier le type de fichier des fichiers qui sont téléchargés. Seuls les fichiers image avec les extensions jpeg, jpg, png, ou gif sont autorisés dans cet exemple.

Initialiser Multer :

  • stockage : Décrit la configuration pour le stockage.
  • limitations : Définit la plus grande taille de fichier autorisée (5 MB dans cet exemple).
  • fileFilter : Utilise la fonction d'un filtre de fichier.

Commencer avec IronPDF

When IronPDF is used to make PDF documents and Multer is used to handle file uploads, a potent solution for managing user-generated content and turning it into polished PDFs is created. Une explication de la façon d'installer et de combiner ces deux bibliothèques dans une application Node.js peut être trouvée ci-dessous.

Qu'est-ce que IronPDF?

IronPDF est un ensemble de bibliothèques d'applications conçues pour faciliter la création, l'édition et la gestion des fichiers PDF. Avec cette application, les développeurs peuvent extraire du texte et des images des documents HTML, ajouter des en-têtes et des filigranes, fusionner de nombreuses pages PDF, et effectuer une variété d'autres tâches. La documentation complète d'IronPDF et son API conviviale rendent simple pour les développeurs la génération automatique de documents PDF de haute qualité. IronPDF inclut toutes les fonctionnalités et fonctionnalités nécessaires pour améliorer les flux de travail des documents et fournir des expériences utilisateur de premier ordre dans divers scénarios, tels que la création de documentation, de rapports, et de factures.

Multer Node.js (Fonctionnement pour les développeurs) : Figure 3 - IronPDF pour Node.js : La bibliothèque PDF Node.js

Caractéristiques de IronPDF

Une méthode rapide et simple pour traiter n'importe quel type de texte HTML, y compris CSS et JavaScript, est de le convertir en PDF.

Fusion de fichiers PDF : Pour faciliter les tâches de gestion des documents, combinez plusieurs documents PDF en un seul fichier PDF.

Extraction de texte et d'image : Extrayez le texte et les images des fichiers PDF afin de les utiliser pour un traitement ou une analyse supplémentaires des données.

Filigranage : Pour des raisons de sécurité ou de marque, vous pouvez ajouter des filigranes texte ou image aux pages PDF.

Inclure un en-tête et un pied de page : Les en-têtes et pieds de page des documents PDF vous permettent d'inclure un message personnalisé ou des numéros de page.

Installer IronPDF

Utilisez le gestionnaire de paquets npm pour installer les paquets Node.js nécessaires pour activer la fonctionnalité IronPDF.

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

Intégrer Multer Node.js avec IronPDF

Modifiez app.js pour configurer IronPDF pour créer des PDFs et Multer pour gérer les téléchargements de fichiers.

const express = require('express');
const multer = require('multer');
const path = require('path');
const IronPdf = require('@ironsoftware/ironpdf');
const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;

// Initialize Express
const app = express();

// Set up Multer storage configuration
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    cb(null, `${Date.now()}-${file.originalname}`); // Unique filename
  }
});

const upload = multer({ storage: storage });

// Single file upload route
app.post('/upload-single', upload.single('file'), async (req, res) => {
  try {
    // Read the uploaded file
    const filePath = path.join(__dirname, 'uploads', req.file.filename);

    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>Uploaded File Content</title>
        </head>
        <body>
          <h1>Uploaded File Content</h1>
          <img src="${filePath}" alt="image" width="500" height="600">
        </body>
      </html>
    `;

    // Initialize IronPDF
    const pdf = await document.fromHtml(htmlContent);

    // Save PDF to file
    const pdfPath = path.join(__dirname, 'uploads', `${Date.now()}-output.pdf`);
    await pdf.saveAs(pdfPath);

    // Respond to the client
    res.send(`File uploaded and PDF generated successfully! <a href="/download-pdf?path=${pdfPath}">Download PDF</a>`);
  } catch (err) {
    res.status(500).send({ error: err.message });
  }
});

// Route to download generated PDF
app.get('/download-pdf', (req, res) => {
  const filename = req.query.path;
  res.download(filename);
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const express = require('express');
const multer = require('multer');
const path = require('path');
const IronPdf = require('@ironsoftware/ironpdf');
const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;

// Initialize Express
const app = express();

// Set up Multer storage configuration
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    cb(null, `${Date.now()}-${file.originalname}`); // Unique filename
  }
});

const upload = multer({ storage: storage });

// Single file upload route
app.post('/upload-single', upload.single('file'), async (req, res) => {
  try {
    // Read the uploaded file
    const filePath = path.join(__dirname, 'uploads', req.file.filename);

    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>Uploaded File Content</title>
        </head>
        <body>
          <h1>Uploaded File Content</h1>
          <img src="${filePath}" alt="image" width="500" height="600">
        </body>
      </html>
    `;

    // Initialize IronPDF
    const pdf = await document.fromHtml(htmlContent);

    // Save PDF to file
    const pdfPath = path.join(__dirname, 'uploads', `${Date.now()}-output.pdf`);
    await pdf.saveAs(pdfPath);

    // Respond to the client
    res.send(`File uploaded and PDF generated successfully! <a href="/download-pdf?path=${pdfPath}">Download PDF</a>`);
  } catch (err) {
    res.status(500).send({ error: err.message });
  }
});

// Route to download generated PDF
app.get('/download-pdf', (req, res) => {
  const filename = req.query.path;
  res.download(filename);
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
JAVASCRIPT

Nous intégrons Multer et IronPDF dans le code Node.js fourni pour créer un système fiable pour gérer les téléchargements de fichiers et produire des documents PDF. Nous configurons Multer avec une configuration de stockage sur disque pour gérer les téléchargements de fichiers multipart/form-data en utilisant le framework Express, en donnant à chaque fichier téléchargé un nom de fichier unique et un répertoire de destination. Multer enregistre les fichiers téléchargés par les utilisateurs via la route /upload-single, et le serveur examine le contenu de ces fichiers.

Multer Node.js (Fonctionnement pour les développeurs) : Figure 4 - Télécharger des fichiers à l'aide de Multer, puis ajouter le fichier téléchargé (image .jpg) dans le contenu HTML, et le convertir en PDF à l'aide d'IronPDF

Après cela, ce contenu est intégré dans un modèle HTML de base. Cet HTML est envoyé à IronPDF, qui crée un fichier PDF qui est stocké dans le répertoire des téléchargements. Finalement, un lien pour télécharger le PDF généré est fourni par le serveur. Cette intégration démontre à quel point Multer peut gérer efficacement les téléchargements de fichiers, et IronPDF convertit ces téléchargements en PDFs de haute qualité pour offrir une gestion fluide des fichiers et la création de documents au sein d'une application Node.js.

Multer Node.js (Fonctionnement pour les développeurs) : Figure 5 - PDF de sortie généré à l'aide d'IronPDF

Conclusion

In conclusion, a complete solution for organizing user-generated content and turning it into polished papers is provided by integrating Multer for file uploads with IronPDF for PDF generation in a Node.js application. Avec des fonctionnalités comme les limitations de taille, le filtrage de fichiers et la configuration de stockage de fichiers, Multer facilite la gestion des téléchargements de fichiers. D'un autre côté, IronPDF offre des choix de personnalisation et un support pour une variété d'éléments de style, permettant de convertir des informations HTML en documents PDF de haute qualité.

Ces deux bibliothèques peuvent être combinées pour créer des applications flexibles qui permettent aux utilisateurs de soumettre des fichiers et de les faire automatiquement transformer en documents PDF esthétiques. Cette intégration augmente l'efficacité des opérations de génération de documents et améliore l'expérience utilisateur en simplifiant le processus de génération de factures, de certifications, de rapports et plus.

Proposer des solutions logicielles riches en fonctionnalités et de haute qualité pour les clients et les utilisateurs finaux devient plus facile en intégrant IronPDF dans votre pile de développement d'applications d'entreprise. De plus, cette fondation solide facilitera les projets, les systèmes backend, et l'amélioration des processus.

IronPDF.

En savoir plus sur d'autres produits Iron Software. Grâce à leur riche documentation, leur communauté de développeurs en ligne dynamique, et leurs révisions fréquentes, ces technologies sont un excellent choix pour les projets de développement de logiciels contemporains.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le ...

Lire la suite