【问题标题】:What do multer().single() returns?multer().single() 返回什么?
【发布时间】:2021-08-29 08:19:17
【问题描述】:

我遇到了如何处理 multer 的错误,但我无法理解它的流程。

var multer = require('multer')
var upload = multer().single('avatar')
app.post('/profile', function (req, res) {
upload(req, res, function (err) {
if (err) {
  // An error occurred when uploading
  return
if (err instanceof multer.MulterError) {
  // A Multer error occurred when uploading.
} else {
  // An unknown error occurred when uploading.
}
// Everything went fine
// Everything went fine.
 })
 })

我无法理解的:-

multer().single() 返回什么以及我们如何在路由器处理程序中使用该(上传函数),如代码所示?

编辑

我找不到源代码,在 multer 中为 .single() 函数编写了什么。谁能给我链接?

编辑 2

我尝试通过以下方式处理错误,但它不起作用。它有什么问题?

const storage = new gridfsStorage({
    url : 'mongodb://localhost:27017/uploadeditems' ,
    file : (req , file) => {
        if(file.mimetype === 'image/jpeg') {
            return {
                filename : file.originalname,
                bucketName : 'Images'
            }
        }
        else if(file.mimetype === 'application/pdf') {
            return {
                filename : file.originalname , 
                bucketName : 'projectPDFs'
            }
        }

        else {
            return null
        }
    }
})


upload = multer({storage })


app.get('/' , (req , res) => {
    res.render('upload')
})

app.post('/upload' , upload.single('pproject')  , async (req, res) => {

    res.render('upload' , {
            msg : "File has been uploaded successfully"
        })
} ,

(err , req , res) => {
  res.json({
    msg : "Some error occured"})
)

我假设如果发生错误,upload.single() 将调用 next(err) ,这将被最后一个错误处理程序捕获。

【问题讨论】:

    标签: node.js express error-handling multer


    【解决方案1】:

    multer().single() 返回一个中间件函数,期望使用参数(req, res, callback) 调用该函数。

    它可以作为中间件自动调用,如下所示:

    app.post('/profile', multer().single('avatar'), (req, res) => {
         // access uploaded file in req.file
    });
    

    这样使用时,回调是 Express next 参数。

    或者,如果您想更好地控制出现错误时发生的情况,那么您可以手动调用它,如您自己的代码看到错误的问题中的代码所示,而不是仅仅转移到已安装的 Express 错误处理程序。

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      相关资源
      最近更新 更多