multer保存图像没有mimetype

我使用的是"multer": "^1.0.6",而且我想把图像保存在上传文件夹中。 我的代码是

 app.post('/post', multer({dest: './uploads/'}).single('file'), function (req, res) { response = { message: 'File uploaded successfully', filename: req.file.filename }; res.end(JSON.stringify(response)); }); 

但是我在上传文件夹中有这个名字的文件8e6e425f8756e0bafb40ed1a3cb86964

为什么我没有mimetype这个名字?

Multer保存没有扩展名的文件,你可以在GitHub上阅读:

文件名用于确定该文件夹内应该命名的文件。 如果没有给出文件名,每个文件将被赋予一个不包含任何文件扩展名的随机名称。

如果你想保存你在这里编写代码的扩展名:

 var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, '/tmp/my-uploads') }, filename: function (req, file, cb) { cb(null, file.originalname); // modified here or user file.mimetype } }) var upload = multer({ storage: storage }) 

所有信息你可以在这里findhttps://github.com/expressjs/multer/blob/master/README.md

Multer并不担心文件的扩展,而是把它完全放在你的身边:你必须定义自己的function。 例如,像这样:

 var multer = require('multer'); var upload = multer({ storage: multer.diskStorage({ destination: function (req, file, cb) { cb(null, './uploads'); }, filename: function (req, file, cb) { var ext = require('path').extname(file.originalname); ext = ext.length>1 ? ext : "." + require('mime').extension(file.mimetype); require('crypto').pseudoRandomBytes(16, function (err, raw) { cb(null, (err ? undefined : raw.toString('hex') ) + ext); }); } })}); app.post('/post', upload.single('file'), function (req, res) { response = { message: 'File uploaded successfully', filename: req.file.filename }; res.end(JSON.stringify(response)); });