Change filename when using express/multer
var express = require( 'express' ), router = express.Router(), util = require( 'util' ), multer = require( 'multer' );var storage = multer.diskStorage( { destination: './uploads/', filename: function ( req, file, cb ) { //req.body is empty... //How could I get the new_file_name property sent from client here? cb( null, file.originalname+ '-' + Date.now()+".pdf"); } });var upload = multer( { storage: storage } );router.route( '/upload' ) .post( upload.single( 'file' ), post );function post( request, response ) { response.json( { message: 'Files Uploaded!' } );}
In Angular you need to move new_file_name to be above file in data as follows:
Upload .upload( { url: '/upload', data: { new_file_name: vm.new_name, //this is the filename I want file: vm.pdf } } )
Basically browser needs to send that data before the file ... Better explanation can be found here: https://github.com/expressjs/multer/issues/134