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

使用Multer上传文件时无法访问filename属性的问题及解决办法

Express使用Multer获取上传文件属性返回undefined问题

问题描述

查阅了大量Multer相关文档后,我确认我的Express服务端配置是正确的,但每次尝试访问传入文件的req.files.filename属性时,返回值都是undefined。

以下是我的Express服务端代码:

const storage = multer.diskStorage({
    destination: '../Uploads',
    filename: (req, file, cb) => cb(null, file.originalname)
});

const upload = multer({
  storage: storage
});

Router.post("/", upload.single("file"), async (req, res) => {
  debug.log("connected");
  debug.log(req.file);
  debug.log(req.body);

  if (!req.files) {
    debug.log("receiving connection but file not found");
    res.send({
      status: false,
      message: "No file uploaded",
    });
  } else {
    debug.log("receiving connection and file found");

    try {
      debug.log(req.files.filename);
      debug.log("attempting to save file" + req.files);
      const post = await new Post({
        title: req.files.filename,
        owner: req.body.owner,
        industry: req.body.industry,
      });

按照我的理解,调用upload.single后应该可以正常使用req.file.filename属性,但实际无法生效。

问题解决方案

我最终解决了这个问题。
原因是app.use(fileUpload());中间件会和Multer产生冲突:

  • 之前启用app.use(fileUpload());时,可以通过req.files访问到文件,但文件无法保存
  • 注释掉app.use(fileUpload());后,可以通过req.file正常访问文件,且文件可以正确保存

内容的提问来源于stack exchange,提问作者methot-ilya-3ds

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:27:02