Node.js 多文件过滤器的句柄回调

Node.js 多文件过滤器的句柄回调,node.js,express,multer,Node.js,Express,Multer,我有写简单的功能上传和写入图像文件到服务器与快速+Multer 现在,我想处理回调错误,以便像 {success:false,message:'Only image are allowed'} 但是,在我的代码中,我得到了这样的HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </hea

我有写简单的功能上传和写入图像文件到服务器与快速+Multer 现在,我想处理回调错误,以便像

{success:false,message:'Only image are allowed'}
但是,在我的代码中,我得到了这样的HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Error: Only images are allowed<br> &nbsp; &nbsp;at fileFilter (C:\Users\reale\source\repos\ChamCongAPI\routes\index.js:35:29)<br> &nbsp; &nbsp;at wrappedFileFilter (C:\Users\reale\source\repos\ChamCongAPI\node_modules\multer\index.js:44:7)<br> &nbsp; &nbsp;at Busboy.&lt;anonymous&gt; (C:\Users\reale\source\repos\ChamCongAPI\node_modules\multer\lib\make-middleware.js:114:7)<br> &nbsp; &nbsp;at Busboy.emit (events.js:182:13)<br> &nbsp; &nbsp;at Busboy.emit (C:\Users\reale\source\repos\ChamCongAPI\node_modules\busboy\lib\main.js:38:33)<br> &nbsp; &nbsp;at PartStream.&lt;anonymous&gt; (C:\Users\reale\source\repos\ChamCongAPI\node_modules\busboy\lib\types\multipart.js:213:13)<br> &nbsp; &nbsp;at PartStream.emit (events.js:182:13)<br> &nbsp; &nbsp;at HeaderParser.&lt;anonymous&gt; (C:\Users\reale\source\repos\ChamCongAPI\node_modules\dicer\lib\Dicer.js:51:16)<br> &nbsp; &nbsp;at HeaderParser.emit (events.js:182:13)<br> &nbsp; &nbsp;at HeaderParser._finish (C:\Users\reale\source\repos\ChamCongAPI\node_modules\dicer\lib\HeaderParser.js:68:8)</pre>
</body>
</html>

您可以手动调用该函数,然后控制错误,而不是使用
upload.single('file')
作为中间件:

var upload = multer({
    storage: storage,
    fileFilter: function (req, file, callback) {
        var ext = path.extname(file.originalname);
        if (ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') {
            return callback(new Error('Only images are allowed'));
        }
        callback(null, isValid(req));
    },


});
router.post('/upload',
    upload.single('file'),
    (req, res, error) => {
        if (error)
            console.log(error);
        const file = req.file;
        console.log(req);
        if (!file) {
            return res.status(500)send({ success: false, message: "Please upload a file" });
        } 
        res.send({ success: true, fileInfo: file.path });

    });
var upload = multer({
  storage: storage,
  fileFilter: function (req, file, callback) {
    var ext = path.extname(file.originalname);
    if (ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') {
      return callback(new Error('Only images are allowed'));
    }
    callback(null, isValid(req));
  },


});

var uploadSingle = upload.single('file');

router.post('/upload',
  (req, res) => { // 3rd param of Request handler is next function, not error object
    uploadSingle(req, res, (err) => { // call as a normal function
      if (err) return res.status(500).send({ success: false, message: 'Only image are allowed' })

      console.log('save the file', req.file)

      const file = req.file;
      console.log(req);
      if (!file) {
        return res.status(500).send({ success: false, message: "Please upload a file" });
      }

      res.send({ success: true, fileInfo: file.path });
    })

  });