如何用multer.fields()存图片到MongoDB?遇文件目录错误求解决
解决Multer.fields()上传文件存入MongoDB时的「无文件或目录」错误
问题根源
multer.single()会将单个上传文件挂载到req.file对象上,但multer.fields()会将指定字段的上传文件挂载到req.files对象中,且每个字段对应的值是文件数组(即使maxCount设为1)。你仍沿用req.file.filename的方式读取路径,自然会找不到文件。
修复代码
假设你的multer配置类似:
const upload = multer({ dest: './public/' }).fields([ { name: 'productImage', maxCount: 1 } ]);
将存图代码修改为:
productImage: { data: fs.readFileSync("./public/" + req.files['productImage'][0].filename), contentType: req.files['productImage'][0].mimetype // 改用文件自带的MIME类型,比硬编码更可靠 }
额外检查项
- 确认
./public/目录已存在,multer不会自动创建目标目录,目录缺失也会触发「无文件或目录」错误 - 确保前端表单的文件输入框
name属性,与multer.fields()中配置的name完全一致(比如都是productImage)
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

