javascript - 我不知道如何使用 Express 处理 Multer 中的错误

标签 javascript node.js express multer

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

我正在研究调用 Controller 的路由,但在 Multer 文档中,它仅显示如何处理路由错误以及 Controller 操作。

路线:

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

处理 Multer 错误的文档代码:

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 显示的错误响应:

error

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

谢谢。

最佳答案

这里 multer 为您提供了一个中间件来处理传入的 multipart/form-data

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(),您可以按照自己的方式处理与 multer 相关的错误

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

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

关于javascript - 我不知道如何使用 Express 处理 Multer 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71119502/

相关文章:

mysql - 发送消息之前执行查询

node.js - 带有React的Socket.io在出现5条消息后表现异常

javascript - 如何在twig模板中使用assetic动态导出内联javascript?

javascript - 将鼠标悬停在一个表格单元格上将突出显示一行中的前一个单元格

node.js - 从 Nodejs 中的文本字段获取输入数据

javascript - 如何将 expressJS 服务器代码拆分到不同的文件中

javascript - node js Express 连接mysql

javascript - 在 Angular.JS 中使用 $httpBackend 测试需要 $resource 的服务

javascript - 添加 Bootstrap 工具提示会修改元素本身的样式——如何阻止这种情况发生?

javascript - 在 Nodejs 中公开函数/构造函数的重复要求