我不知道如何使用Express处理Multer中的错误 [英] I don't know how to handle errors in Multer with Express

查看:33
本文介绍了我不知道如何使用Express处理Multer中的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Multer将最多3个图像上载到服务器,它工作正常,但当我上载超过3个图像时,Multer会告诉我错误,但无法向用户显示。

我正在处理调用控制器的路由,但在Multer文档中,它仅显示了如何处理带有控制器操作的路由的错误。

路由:

router.post('/', upload.array('pictures', 3), 
    newProduct
);

处理多个错误的文档代码:

const multer = require('multer')
const upload = multer().single('avatar')

app.post('/profile', function (req, res) {
  upload(req, res, function (err) {
    if (err instanceof multer.MulterError) {
      // A Multer error occurred when uploading.
    } else if (err) {
      // An unknown error occurred when uploading.
    }

    // Everything went fine.
  })
})

Multer显示的错误响应:

在这种情况下,我如何才能做相同的文档,但单独处理多个错误?

谢谢。

推荐答案

此处,穆特为您提供了一个中间件来处理传入的多部分/表单数据

const multer = require('multer')
const upload = multer().single('avatar')

您可以通过为Multer包提供的中间件创建中间件包装来修复问题。

const multer = require('multer');

const uploadMiddleware = (req,res,next)=>{
  
  const upload = multer().array('pictures', 3);

  // Here call the upload middleware of multer
  upload(req, res, function (err) {
     if (err instanceof multer.MulterError) {
       // A Multer error occurred when uploading.
       const err = new Error('Multer error');
       next(err)
       } else if (err) {
       // An unknown error occurred when uploading.
       const err = new Error('Server Error')
       next(err)
     }

    // Everything went fine.
    next()
  })

}

在这里使用Next(),您可以按自己的方式处理与多个相关的错误

在您的路线上,您可以像这样简单地使用它

router.post('/', uploadMiddleware, 
  newProduct
);

这篇关于我不知道如何使用Express处理Multer中的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆