【发布时间】:2019-09-04 04:59:11
【问题描述】:
你好,我用 Node & Multer 创建文件上传,它可以工作,但问题是如果发生错误(比如用户没有填写其他字段)它仍然上传我不想要的文件
我真的不知道该怎么做,因为我是第一次这样做,所以希望有人有这方面的经验。这是我的代码
const storage = multer.diskStorage({
destination: (req, file, callback) => {
const userPath = path.join(imgStoragePath, req.userId);
fs.mkdir(
userPath,
() => callback(null, userPath)
)
},
filename: (req, file, callback) => {
const filenameParts = file.originalname.split('.');
const ext = filenameParts.pop();
const basename = filenameParts.join('.');
const additionalPath = Date.now() + '' + uuid() + '' +
Math.floor(Math.random() * (2000 - 500)) + 500;
callback(null, basename + '-' + additionalPath + '.' + ext);
}
})
const upload = multer({
storage,
limits: '1mb'
})
router.post('/', upload.single('image'), async (req, res) => {
//code
})
如果发生错误,它应该返回错误消息并将其发送到服务器并停止代码执行并且不执行任何操作,它会执行但也会上传文件,我知道这会发生,因为upload 是中间件,中间件首先执行我希望它阻止它。谢谢!
【问题讨论】:
-
你想在这里处理什么错误?例如,如果前端的表单包含文件上传和输入字段,并且用户通过仅上传文件而不填写输入来提交表单,那么这种情况下代码是否应该返回错误响应?或者您是否正在尝试处理文件上传本身的错误,例如文件大小超过最大限制或指定文件类型以外的文件类型?
-
我的意思是第一种情况,当用户填写文件输入但没有填写其他输入时(但如果您对第二种情况有线索,我会很高兴听到它
标签: javascript node.js file-upload upload multer