首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >multer().single()返回什么?

multer().single()返回什么?
EN

Stack Overflow用户
提问于 2021-06-12 21:18:54
回答 1查看 1.7K关注 0票数 1

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

代码语言:javascript
复制
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()返回什么,我们如何在路由器处理程序中使用(上传功能),如代码所示?

编辑

我找不到源代码,.single()函数中的wriiten是什么。有人能给我提供链接吗?

编辑2

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

代码语言:javascript
复制
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),这将被最后一个错误处理程序捕获。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-12 21:45:05

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

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

代码语言:javascript
复制
app.post('/profile', multer().single('avatar'), (req, res) => {
     // access uploaded file in req.file
});

如果以这种方式使用,回调就是Express next参数。

或者,如果您希望更多地控制发生错误时发生的事情,那么您可以手动调用它,如问题中的代码所示,您自己的代码在哪里看到错误,而不只是转移到安装的Express错误处理程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67953088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档