Zum Fußzeileninhalt springen
NODE-HILFE

Multer Node.js (Wie es für Entwickler funktioniert)

Das Verwalten von Datei-Uploads und die Erstellung von PDF-Dokumenten sind Standardanforderungen für viele Apps in der aktuellen Online-Entwicklungslandschaft. Summing up the capabilities of IronPDF and Multer in a Node.js environment yields a strong solution to effectively handle these requirements.

Multer ist eine Node.js-Middleware, die das Handling von multipart/form-data—das hauptsächlich für Datei-Uploads verwendet wird—erleichtert. Aufgrund seiner großen Flexibilität können Entwickler Dateigrößenbeschränkungen, Speicheroptionen und Dateifilterung festlegen, um sichere und effektive Datei-Uploads zu gewährleisten. Multer ist eine Top-Option für Entwickler, die eine einfache Integration von Datei-Upload-Funktionen in ihre Anwendungen suchen, da es sich leicht mit Express.js integrieren lässt.

Im Gegensatz dazu ist IronPDF eine leistungsstarke PDF-Erstellungsbibliothek, die es Programmierern ermöglicht, PDF-Dokumente mit HTML-Text zu erstellen. Mit seinen zahlreichen Funktionen, darunter die Unterstützung von JavaScript-Ausführung, CSS-Styling und Schrift- sowie Bild-Einbettung, ist es das perfekte Werkzeug, um dynamische Webinformationen in professionell aussehende PDFs zu verwandeln.

Wir werden die nahtlose Zusammenarbeit zwischen diesen beiden leistungsstarken Tools demonstrieren, indem wir beschreiben, wie IronPDF zur Erstellung von PDF-Dokumenten und Multer zur Verwaltung von Datei-Uploads in einer Node.js-Anwendung eingerichtet und genutzt werden.

Was ist Multer Node.js?

Multer ist eine Node.js-Middleware, die das Handling von multipart/form-data – hauptsächlich verwendet für Datei-Uploads – erleichtert. Es bietet eine zuverlässige Methode zur Verwaltung von Datei-Upload-Funktionen in Webanwendungen und lässt sich problemlos mit Express.js integrieren. Um sicherzustellen, dass nur autorisierte Dateitypen hochgeladen werden, bietet Multer Entwicklern die Möglichkeit, Dateigrößenbeschränkungen festzulegen, Speicheroptionen zu konfigurieren und Dateifilter anzuwenden.

Es bietet dem Server Flexibilität bei der Verwaltung von Dateien durch die Unterstützung sowohl von Festplatten- als auch Speicherpufferspeicher. Multer eignet sich auch perfekt für Formulare, bei denen mehrere Dateien gleichzeitig übermittelt werden müssen, da es mehrere hochgeladene Dateien gleichzeitig verarbeiten kann. Alles in allem vereinfacht Multer den Datei-Upload-Prozess und verbessert die Fähigkeit von Node.js-Apps, von Benutzern hochgeladenes Material sicher und effizient zu verwalten.

Multer Node.js (Wie es für Entwickler funktioniert): Abbildung 1 - Multer Node.js

Funktionen von Multer für Node.js

Dateispeicher Optionen

  • Multer kann hochgeladene Dateien direkt auf die Festplatte speichern. Die Festplattenspeicher-Engine ermöglicht es Ihnen, den Dateinamen und das Zielverzeichnis anzugeben. Dies ist besonders hilfreich für Programme, die Dateien für die zukünftige Verwendung speichern müssen.
  • Speicher im Arbeitsspeicher: Multer kann Dateien im Speicher als Pufferobjekte für den vorübergehenden Gebrauch speichern. Dies ist nützlich in Situationen, in denen Dateien nicht auf der Festplatte gehalten werden müssen und sofort verarbeitet werden können.

Dateigrößenbeschränkungen

Die von Multer festlegbaren Größenbeschränkungen für hochgeladene Dateien können dazu beitragen, die Serverleistung zu schützen und Speicherressourcen effizient zu verwalten, indem das Hochladen zu großer Dateien verhindert wird. Sie können die Option "limits" verwenden, um dies zu erreichen.

Dateifilterung

Multer hat eine DateiFilter-Option, mit der Sie verwalten können, welche Dateien akzeptiert werden. Diese Funktion kann Dateien ablehnen, die die Anforderungen nicht erfüllen, und kann auch den MIME-Typ und andere Attribute der Datei überprüfen. Dies gewährleistet, dass nur bestimmte Arten von Dateien – wie Dokumente und Bilder – eingereicht werden.

Umgang mit mehreren Dateien

Multer kann mehrere Dateien, die gleichzeitig hochgeladen werden, verwalten. Routen können eingerichtet werden, um mehrere Felder zu akzeptieren, die Dateien oder Arrays von Dateien enthalten. Dies ist nützlich für Formulare, wenn Benutzer mehrere Dateien gleichzeitig hochladen müssen, wie unterstützende Dokumente und Profilbilder.

Anpassbare Speicher-Engines

Multer lässt Sie neue Speicher-Engines entwerfen, zusätzlich zu den eingebauten Lösungen für Festplatten- und Speicherpuffer. Für optimale Flexibilität können Sie Ihre eigene Logik zur Verwaltung von Datei-Uploads erstellen, einschließlich des Ortes und der Weise, wie Dateien gespeichert werden.

Einfache Integration mit Express

Multer ist so ausgelegt, dass es sich leicht mit Express.js integrieren lässt. Es ist einfach, mit ihm als Middleware in Ihren Express-Routen die Datei-Upload-Funktionalität zu Ihren Webanwendungen hinzuzufügen.

Automatische Handhabung von Multipart-Daten

Durch das automatische Parsen von multipart/form-data vereinfacht Multer den Prozess der Dateiverwaltung in Ihrem serverseitigen Code, indem hochgeladene Dateien und Formulardaten im req-Objekt verfügbar gemacht werden.

Einzel- und Mehrfach-Uploads

Multer bietet verschiedene Methoden (einzeln, Array und Felder) zur Verwaltung des Uploads von einer oder mehreren Dateien. Die Einzelmethode behandelt eine Datei pro Anfrage, die Array-Methode unterstützt mehrere Dateien mit demselben Feldnamen und die Felder-Methode kann zahlreiche Dateien mit unterschiedlichen Feldnamen handhaben.

Erstellen und Konfigurieren von Multer Node.js JS

Die folgenden Schritte können verwendet werden, um Multer in einer Node.js-Anwendung zu konstruieren und einzurichten:

Abhängigkeiten installieren

Die Installation von Multer und Express ist der erste Schritt. npm kann dafür verwendet werden:

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

Multer konfigurieren

Konfigurieren Sie Multer, um Datei-Uploads in Ihrer .js-Datei zu verwalten. Hier ist eine detaillierte Illustration:

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 (Wie es für Entwickler funktioniert): Abbildung 2 - MulterNode.js-Anwendung, die Multer zum Hochladen von Dateien verwendet

Konfigurieren des Speichersystems

  • Ziel: Gibt den Ordner an, in dem hochgeladene Dateien gespeichert werden.
  • Dateiname: Beibehaltung der ursprünglichen Dateierweiterung bei der Erstellung eines eindeutigen Dateinamens für jede hochgeladene Datei basierend auf dem Zeitstempel und einer Zufallszahl.
  • Dateifilter: Eine Option, um den Dateityp der hochgeladenen Dateien zu überprüfen. In diesem Beispiel sind nur Bilddateien mit den Erweiterungen jpeg, jpg, png oder gif erlaubt.

Multer initialisieren:

  • Speicher: Beschreibt die Einrichtung des Speichers.
  • Einschränkungen: Definiert die größte zugelassene Dateigröße (5 MB in diesem Beispiel).
  • Dateifilter: Verwendet die Funktion eines Dateifilters.

Einstieg mit 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. Eine Erklärung, wie diese beiden Bibliotheken in einer Node.js-Anwendung installiert und kombiniert werden, finden Sie unten.

Was ist IronPDF?

IronPDF ist eine Sammlung von Anwendungsbibliotheken, die die Erstellung, Bearbeitung und Verwaltung von PDF-Dateien erleichtern. Mit dieser Anwendung können Entwickler Text und Bilder aus HTML-Dokumenten extrahieren, Kopfzeilen und Wasserzeichen hinzufügen, zahlreiche PDF-Seiten zusammenführen und viele andere Aufgaben durchführen. Dank der umfassenden Dokumentation von IronPDF und der benutzerfreundlichen API können Entwickler ganz einfach hochwertige PDF-Dokumente automatisch generieren. IronPDF enthält alle Funktionen und Funktionalitäten, die erforderlich sind, um Dokumenten-Workflows zu verbessern und erstklassige Benutzererlebnisse in einer Vielzahl von Szenarien zu bieten, wie beispielsweise der Erstellung von Dokumentationen, Berichten und Rechnungen.

Multer Node.js (Wie es für Entwickler funktioniert): Abbildung 3 - IronPDF für Node.js: Die Node.js PDF-Bibliothek

Funktionen von IronPDF

Eine schnelle und einfache Methode zur Arbeit mit jeder Art von HTML-Text, einschließlich CSS und JavaScript, besteht darin, diesen in PDFs umzuwandeln.

PDF-Dateien zusammenführen: Um die Aufgaben des Dokumentenmanagements zu vereinfachen, kombinieren Sie mehrere PDF-Dokumente zu einer einzigen PDF-Datei.

Extraktion von Text und Bild: Nehmen Sie den Text und die Bilder aus PDF-Dateien heraus, um sie für weitere Datenverarbeitung oder -analyse zu verwenden.

Wasserzeichen: Aus Sicherheits- oder Markenrückgründen können Sie Text- oder Bildwasserzeichen zu PDF-Seiten hinzufügen.

Kopf- und Fußzeile einfügen: In Kopf- und Fußzeilen von PDF-Dokumenten können Sie eine personalisierte Nachricht oder Seitennummern einfügen.

IronPDF installieren

Verwenden Sie den Node Package Manager, um die erforderlichen Node.js-Pakete zu installieren, um die IronPDF-Funktionalität zu ermöglichen.

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

Integrieren von Multer Node.js mit IronPDF

Ändern Sie app.js, um IronPDF einzurichten, um PDFs zu erstellen und Multer zur Verwaltung von Datei-Uploads.

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

Wir integrieren Multer und IronPDF im bereitgestellten Node.js-Code, um ein zuverlässiges System zur Verwaltung von Datei-Uploads und zur Erstellung von PDF-Dokumenten zu erstellen. Wir konfigurieren Multer mit einer Festplattenspeicher-Konfiguration, um multipart/form-data-Datei-Uploads mit dem Express-Framework zu verwalten und jedem hochgeladenen Datei einen einzigartigen Dateinamen und Zielverzeichnis zuzuweisen. Multer speichert Dateien, die von Benutzern über die /upload-single Route hochgeladen werden und der Server prüft den Inhalt dieser Dateien.

Multer Node.js (Wie es für Entwickler funktioniert): Abbildung 4 - Dateien hochladen mit Multer, dann die hochgeladene Datei (.jpg-Bild) in HTML-Inhalte einfügen und mit IronPDF in PDFs umwandeln

Danach wird dieser Inhalt in eine einfache HTML-Vorlage integriert. Dieses HTML wird in IronPDF eingespeist, das eine PDF-Datei erzeugt, die im Upload-Verzeichnis gespeichert wird. Am Ende wird ein Link zum Herunterladen der erzeugten PDF-Datei vom Server bereitgestellt. Diese Integration demonstriert, wie effektiv Multer Datei-Uploads verwalten kann und IronPDF diese Uploads in hochwertige PDFs umwandelt, um einen nahtlosen Dateimanagement- und Dokumentenerstellungsprozess in einer Node.js-Anwendung bereitzustellen.

Multer Node.js (Wie es für Entwickler funktioniert): Abbildung 5 - Generierte Ausgabe-PDF mit IronPDF

Abschluss

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. Mit Funktionen wie Größenbeschränkungen, Dateifilterung und der Konfiguration der Dateispeicherung vereinfacht Multer das Verwaltung von Datei-Uploads. Auf der anderen Seite bietet IronPDF Anpassungsoptionen und Unterstützung für eine Vielzahl von Stil Elementen, wodurch es möglich ist, HTML-Informationen in hochwertige PDF-Dokumente zu konvertieren.

Diese beiden Bibliotheken können kombiniert werden, um flexible Anwendungen zu erstellen, die es Benutzern ermöglichen, Dateien zu übermitteln und diese automatisch in ästhetisch ansprechende PDF-Dokumente umzuwandeln. Diese Integration steigert die Effizienz von Dokumenterstellungsvorgängen und verbessert die Benutzererfahrung, indem sie den Prozess der Erstellung von Rechnungen, Zertifizierungen, Berichten und vielem mehr vereinfacht.

Die Bereitstellung von funktionsreichen, hochwertigen Softwarelösungen für Kunden und Endbenutzer ist einfacher geworden, indem Sie IronPDF in Ihren Entwicklungsstack für Unternehmensanwendungen integrieren. Darüber hinaus wird diese starke Basis Projekte, Backend-Systeme und Prozessverbesserungen unterstützen.

IronPDF.

Erfahren Sie mehr über andere Iron Software-Produkte. Aufgrund ihrer umfangreichen Dokumentation, ihrer lebendigen Entwickler-Community online und ihrer häufigen Aktualisierungen sind diese Technologien eine ausgezeichnete Wahl für moderne Softwareentwicklungsprojekte.

Darrius Serrant
Full-Stack-Software-Ingenieur (WebOps)

Darrius Serrant hat einen Bachelor-Abschluss in Informatik von der University of Miami und arbeitet als Full-Stack-WebOps-Marketing-Ingenieur bei Iron Software. Seit seiner Jugend vom Programmieren angezogen, sah er die Informatik als sowohl mysteriös als auch zugänglich, was es zum perfekten Medium für Kreativität und Problemlösung ...

Weiterlesen