当我在onFileUploadStart()中包含逻辑时,Multer不上载文件 – NodeJs

我试图用multer只上载带有节点的图像文件

file upload成功与此:

app.use(multer({ dest: __dirname + '/public/uploads/', onFileUploadData: function (file, data) { console.log(data.length + ' of ' + file.fieldname + ' arrived'); }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path); } })); 

但我想限制它只有图像,并添加一些用户身份validation(用户身份validation尚未实现在下面的例子中)。

当我启动包含onFileUploadStart的服务器时,它将login到它上传的控制台,但是当我检查我的上传文件夹时,什么也没有。

 app.use(multer({ dest: __dirname + '/public/uploads/', onFileUploadStart: function (file) { console.log(file.mimetype); if (file.mimetype !== 'image/png' || file.mimetype !== 'image/jpg' || file.mimetype !== 'image/jpeg') { return false; } else { console.log(file.fieldname + ' is starting ...'); } }, onFileUploadData: function (file, data) { console.log(data.length + ' of ' + file.fieldname + ' arrived'); }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path); } })); 

问题是你的布尔逻辑。

这个:

 if (file.mimetype !== 'image/png' || file.mimetype !== 'image/jpg' || file.mimetype !== 'image/jpeg') 

应该是:

 if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg')