使用fs将上传的图像重命名为multer

当用户上传一张图片 – 我使用的是一个名称包含一个空格的方式 – 我想用"-"replace空格,然后将文件名保存到我的Mysql表中,然后重命名file upload到新的名称与"-" 。 这是我的代码。 它会重新命名并且Mysql表格会使用连字符保存新名称,但由于某种原因图像不会被上传,甚至没有错误,事实上POST请求实际上是成功的。

 router.post('/uploadpost', upload.single('image'), function(req, res){ var name = req.file.originalname; var reName; if(/\s/g.test(name)){ reName = name.replace(" ", "-"); fs.rename(req.file.path, reName, function(err){ if(err){ throw err; } }); } 

为什么不在Multer保存文件时更改名称? 类似的东西:

 function generateName(){ return 'newname'; } var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, '/tmp/my-uploads') }, filename: function (req, file, cb) { cb(null, generateName()); // generate new name } }) var upload = multer({ storage: storage }) 

文档 – https://github.com/expressjs/multer#diskstorage