You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:56:07