使用 ".fields" 属性从 multer 捕获错误



我似乎不知道如何使用"捕获multer的错误;。字段";所有物用户应该上传4张照片,所以我使用.fields属性上传到我的mongodb数据库。

这是我的multer配置文件,名为s-multer

// [REQURIE] //
const crypto = require('crypto')
const multer = require('multer')
const MulterGridFsStorage = require('multer-gridfs-storage')
const path = require('path')

// [REQUIRE] Personal //
const config = require('../s-config')
module.exports = {
upload: multer({
storage: new MulterGridFsStorage({
url: config.MONGO_URI,

file: (req, file) => {
try {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) { return reject(err) }

const filename = buf.toString('hex') + path.extname(
file.originalname
)

resolve({
filename: filename,
bucketName: 'uploads'
})
})
})
} catch (err) { console.log('err', err) }
},
}),

onError : function(err, next) { console.log('err', err) },

limits: { fileSize: 50000 }
}),
}

这是我的快速路线,用户也发送了一个请求:

const multer = require('../../../s-multer')
router.post(
'/create',
multer.upload.fields(
[
{ name: 'general_image1', maxCount: 1 },
{ name: 'pump_image1', maxCount: 1 },
{ name: 'pump_image2', maxCount: 1 },
{ name: 'pump_image3', maxCount: 1 },
]
),
async (req, res) => {
// do stuff here
}
)

当上传一个大于50kb的文件时,它会在服务器终端中抛出一个错误,但我不知道如何捕获它并将其发送回用户。

想明白了。

router.post(
'/create',
async (req, res, next) => {
multer.upload.fields(
[
{ name: 'general_image1', maxCount: 1 },
{ name: 'pump_image1', maxCount: 1 },
{ name: 'pump_image2', maxCount: 1 },
{ name: 'pump_image3', maxCount: 1 },
]
)(req, res, (err) => {
if (err) {
// SEND CAUGHT ERROR!
res.send(err)
}
else { next() }
})
},
async (req, res) => {
// do stuff here
}
)

最新更新