Multer upload is not a function Multer upload is not a function node.js node.js

Multer upload is not a function


As @Aabid told in The comments you will not need to use both, the multer middleware and upload in the controller.

You can use:

app.post('/editPhoto', upload.single('avatar'), (req, res, next) => {   // here in the req.file you will have the uploaded avatar file})

Or you can use:

app.post('/editPhoto', (req, res, next) => {  upload(req, res, function (err) {    if (err) {      // This is a good practice when you want to handle your errors differently      return    }    // Everything went fine   })})

So you use one of the 2 methods, not both at the same time.


// Multer upload configconst fs = require('fs');const path = require('path');const multer = require('multer');const storage = multer.diskStorage({    destination: function (req, file, cb) {        cb(null, '/tmp/')    },    filename: function (req, file, cb) {        const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)        cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname))    }})const upload = multer({storage: storage});app.post('/uploadPhoto', (req, res, next) => {    upload.single('filename_here')(req, res, function (err) {        if (err) {            // A Multer error occurred when uploading.            res.json({msg: err.message})        } else {            // Everything went fine.            // req.file            // {            //   fieldname: 'filename_here',            //   originalname: 'nhancv_dep_trai.png',            //   encoding: '7bit',            //   mimetype: 'image/png',            //   destination: '/tmp/',            //   filename: 'filename_here-1607694392023-220481630',            //   path: '/tmp/filename_here-1607694392023-220481630',            //   size: 5907            // }            const file = req.file;            console.log(file);            // Delete tmp            try {                // fs.unlinkSync(file.path);            } catch (e) {                // Ignore                console.error(e);            }            res.json({msg: 'ok'});        }    });})

Test

curl --location --request POST '<host>:<port>/uploadPhoto' \--form 'filename_here=@"/Users/nhancv/Desktop/nhancv_dep_trai.png"'


var multer = require('multer');var upload = multer({ dest: './temp/hh' })var cpUpload = upload.fields([{ name: 'audio_file', maxCount: 1 }, { name: 'gallery', maxCount: 8 }])app.post('/v1/index/uploads', cpUpload, function (req, res, next) {  console.log(req.files['audio_file'][0]);   console.log(req.files['gallery']); })