我似乎不知道如何使用"捕获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
}
)