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.