config/config.multer.js

const multer = require("multer");
const uuid = require("uuid");

/**
 * Multer DiskStorage configuration
 *
 * @module config/multer
 * @see {@link http://expressjs.com/en/resources/middleware/multer.html|Express multer middleware}
 * @param {*} folder
 * @returns {multer.StorageEngine}
 */
const config = (folder) => {
  return multer.diskStorage({
    // destination is used to determine within which folder the uploaded files
    // should be stored.
    destination: (req, file, callback) => {
      callback(null, `public/images/${folder}`);
    },
    // filename is used to determine what the file should be named inside the
    // folder. If no filename is given, each file will be given a random name
    // that doesn’t include any file extension.
    filename: (req, file, callback) => {
      console.log("multer file : ", file);
      const name = uuid.v4();
      const ext = file.originalname.split(".").at(-1);
      callback(null, name + "." + ext);
    },
  });
};

module.exports = config;