Renaming an uploaded file using Multer doesn't work (Express.js) Renaming an uploaded file using Multer doesn't work (Express.js) express express

Renaming an uploaded file using Multer doesn't work (Express.js)


The usage for Multer has changed.

Currently Multer constructor accepts only three options:

  1. dist/storage
  2. fileFilter
  3. limits

now rename, onFileUploadStart, onFileUploadComplete would not work.

however renaming can be done using DiskStorage

var storage = multer.diskStorage({    destination: function (req, file, cb) {        cb(null, '/tmp/my-uploads')    },    filename: function (req, file, cb) {        cb(null, file.fieldname + '-' + Date.now())  }})var upload = multer({ storage: storage })

have a look at these links:


I know this post is dated. I want to contribute to those who may arrive later. Below is a full functional server script to handle multiple uploaded pictures with random saved pictures names and file extension.

var express = require("express");var multer = require("multer");var app = express();var path = require("path");var uuid = require("uuid");// Allow cross origin resource sharing (CORS) within our applicationapp.use(function(req, res, next) {    res.header("Access-Control-Allow-Origin", "*");    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");    next();});var storage = multer.diskStorage({  destination: function (req, file, cb) {    cb(null, 'uploadedimages/')  },  filename: function (req, file, cb) {    cb(null, uuid.v4() + path.extname(file.originalname));  }})var upload = multer({ storage: storage })// "files" should be the same name as what's coming from the field name on the client side.app.post("/upload", upload.array("files", 12), function(req, res) {    res.send(req.files);    console.log("files = ", req.files);});var server = app.listen(3000, function() {    console.log("Listening on port %s...", server.address().port);});


try this way which i'm using

  var storage = multer.diskStorage({    destination: function (req, file, cb) {      cb(null, 'uploads/')    },    filename: function (req, file, cb) {      console.log(file);      var fileObj = {        "image/png": ".png",        "image/jpeg": ".jpeg",        "image/jpg": ".jpg"      };      if (fileObj[file.mimetype] == undefined) {        cb(new Error("file format not valid"));      } else {        cb(null, file.fieldname + '-' + Date.now() + fileObj[file.mimetype])      }    }  })  var upload = multer({ storage: storage })