Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
La gestion des téléchargements de fichiers et la production de documents PDF sont des exigences standard pour de nombreuses applications dans le paysage actuel du développement en ligne. Résumé des capacités de IronPDF etMulterdans un environnement Node.js offre une solution solide pour gérer efficacement ces exigences.
Multerest un middleware Node.js qui facilite la gestion du multipart/form-data, principalement utilisé pour le téléversement de fichiers. En raison de sa grande flexibilité, les développeurs peuvent spécifier des restrictions de taille de fichier, des options de stockage et un filtrage des fichiers 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 la fonctionnalité de téléchargement de fichiers dans leurs applications, en raison de sa simplicité d'intégration avec Express.js.
Inversement,IronPDFest une bibliothèque de création PDF puissante qui permet aux programmeurs de créer des documents PDF à partir de texte HTML. Avec ses nombreuses capacités, y compris la prise en charge de l'exécution JavaScript, le stylage CSS, et l'intégration de polices et d'images, c'est l'outil parfait pour transformer des informations web dynamiques en PDF à l'aspect professionnel.
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.
Multerest un middleware Node.js qui simplifie la gestion du multipart/form-data, principalement utilisé pour le téléchargement de fichiers. Il offre une méthode fiable pour gérer les fonctionnalités de téléchargement de fichiers dans les applications web et s'interface facilement avec Express.js. Pour s'assurer que seuls les types de fichiers autorisés sont téléchargés, Multer offre aux développeurs la possibilité de spécifier des restrictions de taille de fichier, de configurer des options de stockage et d'appliquer un filtrage de fichiers.
Il offre au serveur la flexibilité dans la gestion des fichiers en prenant en charge à la fois le stockage sur disque et en mémoire. Multer est également parfait pour les formulaires nécessitant la soumission de nombreux fichiers 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, améliorant la capacité des applications Node.js à gérer de manière sécurisée et efficace le matériel téléchargé par les utilisateurs.
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 des limitations pour accomplir cela.
Multer dispose d'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, tels que les documents et les images, sont soumis.
Multer peut gérer plusieurs fichiers téléchargés simultanément. Les routes peuvent être configurées pour accepter plusieurs champs contenant des fichiers ou des tableaux de fichiers. Cela est utile pour les formulaires lorsque les utilisateurs doivent télécharger plusieurs fichiers à la fois, tels que des documents justificatifs et des images de profil.
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 gérer les téléchargements de fichiers, y compris où et comment les fichiers sont enregistrés.
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.
En analysant automatiquement les données 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 du formulaire disponibles sur l'objet req.
Multer propose plusieurs moyens(simple, tableau et champs)pour gérer les téléchargements d'un ou plusieurs fichiers. La méthode simple traite un fichier par requête, la méthode tableau prend en charge plusieurs fichiers avec le même nom de champ, et la méthode champs peut gérer de nombreux fichiers avec des noms de champ différents.
Les étapes ci-dessous peuvent être utilisées pour construire et configurer Multer dans une application Node.js :
La première étape consiste à installer Multer et Express. npm peut être utilisé pour cela :
npm install multer
npm install express
npm install multer
npm install express
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install multer npm install express
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}`);
});
Private const express = require( 'express');
Private const multer = require( 'multer');
Private const path = require( 'path');
Private const fs = require( 'fs');
' Initialize Express
Private const app = express()
' Set up storage configuration for Multer
Private const storage = multer.diskStorage({ destination:= (req, file, cb) =>
cb(Nothing, 'uploads/');
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
, filename: (req, file, cb) =>
' Configure file filter function to allow only certain file types
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
const fileFilter = (req, file, cb) =>
If True Then
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
const allowedFileTypes = /jpeg jpg png gif/
const mimetype = allowedFileTypes.test(file.mimetype)
const extname = allowedFileTypes.test(path.extname(file.originalname).toLowerCase())
If mimetype AndAlso extname Then
Return cb(Nothing, True)
Else
cb(New [Error]( 'Only images are allowed!'));
End If
End If
' Initialize Multer with storage, file size limit, and file filter options
const upload = multer({
storage:= storage,
limits:= { fileSize:= 1024 * 1024 * 5 },
fileFilter:= fileFilter
})
' Single file upload route
app.post( '/upload-@single', upload.@single('profilePic'), (req, res) =>
If True Then
Try
res.send( 'Single file uploaded successfully');
Catch e1 As err
res.status(400).send({ [error]:= err.message })
End Try
End If
)
' Multiple files upload route
app.post( '/upload-multiple', upload.array('photos', 5), (req, res) =>
If True Then
Try
res.send( 'Multiple files uploaded successfully');
Catch e2 As err
res.status(400).send({ [error]:= err.message })
End Try
End If
)
' Error handling middleware
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
app.use((err, req, res, [next]) =>
' Start the server
const PORT = process.env.PORT 3000
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
app.listen(PORT, () =>
destination : Indique le dossier dans lequel les fichiers téléchargés seront stockés.
nom de fichier : Conserve l'extension de fichier d'origine 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 téléchargés. Seuls les fichiers image avec les extensions jpeg, jpg, png ou gif sont autorisés dans cet exemple.
Initialiser Multer :
QuandIronPDFest utilisé pour créer des documents PDF etMulterest utilisé pour gérer les téléchargements de fichiers, une solution puissante pour gérer le contenu généré par les utilisateurs et le transformer en PDFs soignés est créée. Une explication sur la façon d'installer et de combiner ces deux bibliothèques dans une application Node.js peut être trouvée ci-dessous.
IronPDFest un ensemble de bibliothèques d'applications conçues pour faciliter la création, la modification et la gestion des fichiers PDF. Avec cette application, les développeurs peuvent extraire du texte et des images à partir de documents HTML, ajouter des en-têtes et des filigranes, fusionner de nombreuses pages PDF, et effectuer une variété d'autres activités. La documentation complète d'IronPDF et son API conviviale permettent aux développeurs de générer automatiquement des documents PDF de haute qualité. IronPDF comprend toutes les fonctionnalités nécessaires pour améliorer les flux de travail des documents et offrir des expériences utilisateur de premier ordre dans une variété de scénarios, tels que la création de documentation, de rapports et de factures.
Une méthode rapide et simple pour traiter tout type de texte HTML, y compris le CSS et le JavaScript, est de le convertir en PDF.
Fusion de fichiers PDF : Pour faciliter les tâches de gestion de documents,combiner plusieurs PDFdocuments en un seul fichier PDF.
Extraction de texte et d'images : Extraire le texte et les images des fichiers PDF afin de les utiliser pour un traitement ou une analyse de données supplémentaires.
Filigrane : Pour des raisons de sécurité ou de branding, vous pouvez ajouter des filigranes de texte ou d'image aux pages PDF.
Inclure l'en-tête et le pied de page : Leles en-têtes et les pieds de pagedes documents PDF vous permettent d'inclure un message personnalisé ou des numéros de page.
Utilisez le gestionnaire de paquets Node pour installer les paquets Node.js nécessaires afin d'activer la fonctionnalité d'IronPDF.
npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
Modifiez app.js pour configurer IronPDF afin de créer des PDF 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.filename;
const pdfPath = path.join(__dirname, 'uploads', filename);
res.download(pdfPath);
});
// 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.filename;
const pdfPath = path.join(__dirname, 'uploads', filename);
res.download(pdfPath);
});
// 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
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: var config=IronPdf.IronPdfGlobalConfig const app = express();
IronPdf.IronPdfGlobalConfig Const app = express()
Dim config As Dim=IronPdf.IronPdfGlobalConfig Const app
' Set up Multer storage configuration
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
const storage = multer.diskStorage({ destination:= (req, file, cb) =>
If True Then
cb(Nothing, 'uploads/');
End If
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
, filename: (req, file, cb) =>
const upload = multer({ storage:= storage })
' Single file upload route
app.post( '/upload-@single', upload.@single('file'), async(req, res) =>
If True Then
Try
const filePath = path.join(__dirname, 'uploads', req.file.filename);
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: 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> `;
"500" height="600"> </body> </html> `
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: const htmlContent = ` <html> <head> <title> Uploaded File Content</title> </head> <body> <h1> Uploaded File Content</h1> <img src="${filePath}" alt="image" width="500" height
"image" width="500" height
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: const htmlContent = ` <html> <head> <title> Uploaded File Content</title> </head> <body> <h1> Uploaded File Content</h1> <img src="${filePath}" alt="image" width
"${filePath}" alt="image" width
'INSTANT VB TODO TASK: The following line contains an assignment within expression that was not extracted by Instant VB:
'ORIGINAL LINE: const htmlContent = ` <html> <head> <title> Uploaded File Content</title> </head> <body> <h1> Uploaded File Content</h1> <img src="${filePath}" alt
const htmlContent = ` (Of html) (Of head) (Of title) Uploaded File Content</title> </head> (Of body) (Of h1) Uploaded File Content</h1> <img src="${filePath}" alt
const pdf = Await document.fromHtml(htmlContent)
const pdfPath = path.join(__dirname, 'uploads', `${@Date.now()}-output.pdf`);
Await pdf.saveAs(pdfPath)
'INSTANT VB TODO TASK: The following line contains an assignment within expression that was not extracted by Instant VB:
'ORIGINAL LINE: res.send(`File uploaded and PDF generated successfully! <a href="/download-pdf?path=${pdfPath}"> Download PDF</a>`);
res.send(`File uploaded [and] PDF generated successfully!<a href="/download-pdf?path=${pdfPath}"> Download PDF</a>`)
Catch e1 As err
res.status(500).send({ [error]:= err.message })
End Try
End If
)
' Route to download generated PDF
app.get( '/download-pdf', (req, res) =>
If True Then
const filename = req.query.filename
const pdfPath = path.join(__dirname, 'uploads', filename);
res.download(pdfPath)
End If
)
' Start the server
const PORT = process.env.PORT 3000
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
app.listen(PORT, () =>
Nous intégrons Multer et IronPDF dans le code Node.js fourni pour créer un système fiable de gestion des téléchargements de fichiers et de production de 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 attribuant à 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.
Après cela, ce contenu est intégré dans un modèle HTML de base. Cet HTML est intégré dans IronPDF, quicrée un fichier PDFqui est stocké dans le répertoire des téléchargements. À la fin, 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 PDF de haute qualité pour offrir une gestion fluide des fichiers et la création de documents au sein d'une application Node.js.
En conclusion, une solution complète pour organiser le contenu généré par les utilisateurs et le transformer en documents soignés est fournie en intégrantMulterpour les téléchargements de fichiers avecIronPDFpour la génération de PDF dans une application Node.js. Avec des fonctionnalités telles que 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'autre part, IronPDF offre des options de personnalisation et prend en charge une variété d'éléments de style, rendant possible deconvertir les informations HTMLen documents PDF de haute qualité.
Ces deux bibliothèques peuvent être combinées pour créer des applications flexibles permettant aux utilisateurs de soumettre des fichiers et de les transformer automatiquement 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 rationalisant le processus de génération de factures, certifications, rapports, et plus encore.
Fournir des solutions logicielles haut de gamme et riches en fonctionnalités pour les clients et les utilisateurs finaux est devenu plus facile grâce à l'intégration.IronPDFet dans votre pile de développement d'applications d'entreprise. En outre, cette base solide facilitera les projets, les systèmes backend et l'amélioration des processus.
En savoir plus sur d'autresProduits Iron Software. En raison de leur richessela documentation, communauté dynamique de développeurs en ligne, et révisions fréquentes, ces technologies sont un excellent choix pour les projets de développement logiciel contemporains.
9 produits de l'API .NET pour vos documents de bureau