文件上傳之multer


首先給出github地址吧

https://github.com/expressjs/multer

這個是整理的一個比較好的資料

https://cnodejs.org/topic/564f32631986c7df7e92b0db

在這里講解一個limits這個對象,是用來對文件進行限制的,例如文件大小,一次上傳文件的個數等等

var upload = multer({
    storage: storage,
    limits:{
        //在這里設置最多能上傳多少個文件,那么就不用在下面upload.array('field1', 5)設置了
        files:1, //一次只允許上傳一個文件
        fileSize:1000*1024  // 設置文件大小不能超過1000*1024
} });

 

如果有了這些限制那么如果違背了這些限制,就會報錯,那么我們就應該通過錯誤類型,來做出相應的提示。這時我們可以根據err.code來判斷哪里出了錯,我們可以打開make-error.js,我們可以看到有如下的err.code類型

這個應該是與limits里面的對應的。

那么我們如何來捕捉這些錯誤呢。然后實現自己的錯誤提示呢。這里提供了一種方式

https://github.com/expressjs/multer/issues/186

var limits = { fileSize: 1024 * 1024 * 1024 }
var upload = multer({ limits: limits })

app.post('/upload', upload.single('file'), function (req, res) {
  res.send({ result: 'ok' })
})

app.use(function (err, req, res, next) {
  if (err.code === 'LIMIT_FILE_SIZE') {
    res.send({ result: 'fail', error: { code: 1001, message: 'File is too big' } })
    return 
  }

  // Handle any other errors
})

當然如果要更多限制(比如文件類型等等),可以通過fileFilter來實現

這里是常見的一些問題和解決辦法

https://github.com/expressjs/multer/issues

然后好像是新版已經移除了一些事件如:onFileUploadStart。所以大家在用的時候要注意,以官方資料為准。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM