Multer().Single()返回什么? [英] What do multer().single() returns?

查看:6
本文介绍了Multer().Single()返回什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了如何处理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()返回什么?我们如何在路由器处理程序中使用该(Upload函数),如代码所示?

编辑

我找不到源代码,Multer内部为.Single()函数编写了什么。有人能给我提供它的链接吗?

编辑2

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

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
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"})
)

我假设如果发生错误,则pload.Single()将调用Next(Err),这将被最后一个错误处理程序捕获。

推荐答案

multer().single()返回预期使用参数(req, res, callback)调用的中间件函数。

可以自动调用为中间件,如:

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

以这种方式使用时,回调是Expressnext参数。

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

这篇关于Multer().Single()返回什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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