Upload different files in different folders using Multer in NodeJs
Step 1: Install Multer First, you need to install Multer by running the following command: npm install multer
Step 2: Set Up Multer Middleware Require Multer and set up the middleware to specify the destination for different file types. For example:
const multer = require('multer');
const imageStorage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/images');
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
const pdfStorage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/pdfs');
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
const uploadImage = multer({ storage: imageStorage }).single('image');
const uploadPdf = multer({ storage: pdfStorage }).single('pdf');
Step 3: Handle File Upload Create a route to handle the file upload for each file type. For example:
app.post('/upload/image', function (req, res) {
uploadImage(req, res, function (err) {
if (err instanceof multer.MulterError) {
return res.status(400).json({ message: 'File upload error' });
} else if (err) {
return res.status(500).json({ message: 'Internal server error' });
}
return res.status(200).json({ message: 'File uploaded successfully' });
});
});
app.post('/upload/pdf', function (req, res) {
uploadPdf(req, res, function (err) {
if (err instanceof multer.MulterError) {
return res.status(400).json({ message: 'File upload error' });
} else if (err) {
return res.status(500).json({ message: 'Internal server error' });
}
return res.status(200).json({ message: 'File uploaded successfully' });
});
});
Step 4: Test the File Upload Test the file upload by sending a POST request with the file to the respective routes (/upload/image and /upload/pdf).
Step 5: Verify File Upload Check the specified folders (uploads/images and uploads/pdfs) to verify that the files have been successfully uploaded.