当我在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')