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

使用Multer配置diskStorage仍无法修改上传文件名称

问题解决:Multer配置自定义文件名无效,仍生成随机名称

你遇到的问题其实是个很容易忽略的拼写细节——配置项名称写错了!

Multer的diskStorage配置里,用来指定自定义文件名的字段是全小写的filename,但你代码里写成了驼峰式的fileName,Multer识别不到这个错误的配置项,所以自动触发了默认的随机命名逻辑,这就是为什么文件还是以随机字符串保存的原因。

修正后的完整代码:

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, './uploads/')
  },
  // 注意这里是 filename,不是 fileName
  filename: (req, file, cb) => {
    cb(null, file.originalname)
  }
})

const upload = multer({ storage: storage })

router.post('/', upload.single('carImage'), (req, res) => {
  res.send(req.file);
})

测试验证:

修改后重新上传文件,你收到的响应里filename字段就会变成上传的原文件名(比如testOCR8.jpg),而不是之前的随机字符串了。

额外提醒一句:生产环境里直接用原文件名有风险——如果多个用户上传同名文件,后面的会覆盖掉前面的。建议给原文件名加上时间戳或唯一标识来避免冲突,比如:

filename: (req, file, cb) => {
  const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
  cb(null, `${uniqueSuffix}-${file.originalname}`)
}

内容的提问来源于stack exchange,提问作者obiwankenoobi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:18:38