【问题标题】:File Too Large Error Handling Nodejs Express Multer文件太大错误处理 Nodejs Express Multer
【发布时间】:2016-09-14 07:42:51
【问题描述】:

我在 ExpressJS 中使用 multer。我想将文件上传限制为 0.5 MB。

var limits = { fileSize: 0.5 * 1024 * 1024 };

var upload = multer({ dest: './public/uploads/', limits: limits
 }).single('upl')

 app.post('/',upload, function (req, res) {
  upload(req, res, function (err) {
    if (err) {
            console.log("cs " + err);
      return
    }

           res.end('You new avatar is uploaded')
    // Everything went fine
  })
})

当文件小于 0.5 MB 时,我可以看到“你的新头像已上传”,但当文件结束时,我会看到,

Error: File too large
   at makeError (C:\Users\Owner\Desktop\nodejs projects\dummy\node_modules\multer\lib\make-error.js:12:13)
   at abortWithCode (C:\Users\Owner\Desktop\nodejs projects\dummy\node_modules\multer\lib\make-middleware.js:77:22)
   at FileStream.<anonymous> (C:\Users\Owner\Desktop\nodejs projects\dummy\node_modules\multer\lib\make-middleware.js:139:11)
   at emitNone (events.js:80:13)
   at FileStream.emit (events.js:179:7)
   at PartStream.onData (C:\Users\Owner\Desktop\nodejs projects\dummy\node_modules\busboy\lib\types\multipart.js:220:18)
   at emitOne (events.js:90:13)
   at PartStream.emit (events.js:182:7)
   at readableAddChunk (_stream_readable.js:153:18)
   at PartStream.Readable.push (_stream_readable.js:111:10)

显然,我绝不希望最终用户看到这一点。我该如何正确处理?

【问题讨论】:

  • 那个错误正在返回给浏览器?我很惊讶。

标签: node.js error-handling


【解决方案1】:

尝试像这样重写(先删除“上传”):

app.post('/', function (req, res) {
  upload(req, res, function (err) {
    if (err) {
        console.log("cs " + err);
      return
    }

    res.end('You new avatar is uploaded')
    // Everything went fine
  })

【讨论】:

  • 那么我将如何引入大小限制?
  • 像您的代码一样编写只需删除 app.post('/') 中的上传中间件
【解决方案2】:

我在 server.js 文件的末尾创建了一个 Express 处理程序。

  1. app.use()之后放置处理函数,检查这个错误是否来自multer并发送您需要的数据。 我的代码发送LIMIT_FILE_SIZE 字符串。
app.use(() => (err: Error, req: Request, res: Response, next: NextFunction) => {
    if (err instanceof multer.MulterError) {
        return res.status(418).send(err.code);
    }
});

文档:http://expressjs.com/en/guide/error-handling.html#error-handling

【讨论】:

    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多