Renaming an uploaded file using Multer doesn't work (Express.js)
The usage for Multer has changed.
Currently Multer constructor accepts only three options:
- dist/storage
- fileFilter
- 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 })