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

NodeJS中Multer upload.fields返回req.files为undefined问题求助

Node.js 双文件上传时 req.files 返回 undefined 问题排查

此前正常运行的Node.js双文件上传功能,现在出现req.files返回undefined的情况,相关代码如下:

路由代码

router.post("/api/upload", upload.fields([{ name: 'data', maxCount: 1 }, { name: 'song', maxCount: 1 }]), function(req,res){
  console.log(req.files);
  data = req.files["data"][0];
  song = req.files["song"][0];
  path_data = "uploads/" + data.filename;
  path_song = "uploads/" + song.filename;
  console.log(data, path_data, song, path_song);
  
  makeStage(path_data, path_song, req, function(result) {
    res.send(toString(result));
  });
});

Multer 配置代码

const multer = require('multer');
const storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, 'uploads/')
    },
    filename: function(req, file, cb) {
        cb(null, file.fieldname + '-multer')
    }
});
const upload = multer({storage}); 

前端HTML代码

<form action=/api/upload method="post" enctype="multipart/form-data">

<label>Level Data</label>
<input type="file" name="data" accept=".txt">
<hr>
<label>Level Song</label>
<input type="file" name="song" accept=".mp3">
<hr>
<button type="submit">Upload</button>

</form>

常见排查方向

  • 确认uploads目录是否存在:Multer不会自动创建目标目录,若该文件夹被删除,会导致文件无法保存,进而req.files无数据,手动创建目录后重试。
  • 检查Multer中间件挂载:确保路由中使用的upload是正确配置的实例,未被覆盖或未正确导入。
  • 前端表单校验:提交时确认两个文件均已选择,且表单enctype="multipart/form-data"属性无拼写错误。
  • 查看请求头:在路由中打印req.headers,确认content-type包含multipart/form-data,排除请求格式问题。
  • 目录权限检查:确认Node.js进程拥有uploads目录的读写权限。
  • 版本兼容验证:若近期更新过Multer包,可能存在版本兼容问题,尝试回退至之前正常运行的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:40:18