如何使用multer存储带有文件扩展名的文件?

pipe理将我的文件存储在一个文件夹,但他们存储没有文件扩展名。

有没有人知道我将如何存储文件的扩展名?

从文档:“Multer不会为您添加任何文件扩展名,您的函数应返回文件扩展名的文件名。”

以下是如何添加扩展名的方法:

var multer = require('multer'); var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, Date.now() + '.jpg') //Appending .jpg } }) var upload = multer({ storage: storage }); 

我会build议使用mimetype属性来确定扩展名。 例如:

 filename: function (req, file, cb) { console.log(file.mimetype); //Will return something like: image/jpeg 

更多信息: https : //github.com/expressjs/multer

对不起,我不能评论上面的斯科特的答案,但我有一个解决scheme,添加适当的文件扩展名。 如果你使用path节点模块

 var multer = require('multer'); var path = require('path') var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, Date.now() + path.extname(file.originalname)) //Appending extension } }) var upload = multer({ storage: storage }); 

我从file.mimetype获得文件扩展名。 我分裂mimetype并从它获得文件扩展名请尝试下面的function。

 let storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './uploads') }, filename: function (req, file, cb) { let extArray = file.mimetype.split("/"); let extension = extArray[extArray.length - 1]; cb(null, file.fieldname + '-' + Date.now()+ '.' +extension) } }) const upload = multer({ storage: storage })