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

Postman报Malformed part header且multer获取req.file为undefined

Postman调试multer文件上传接口异常问题

问题表现

  • 初始配置请求头调试时出现两类异常:
    • 保留Postman默认生成的Content-Type,请求抛出Error: Malformed part header错误
    • 移除默认Content-Type改为手动自定义配置,后端无法识别上传文件,req.file取值为undefined;手动给Content-Type添加任意boundary参数时,会再次触发上述格式错误
  • 关闭重启Postman后,Error: Malformed part header报错不再出现,但req.file始终为undefined
  • 已尝试的无效操作:

后端实现代码

服务端基于Node.js + multer实现单文件上传,逻辑如下:

const multer = require("multer")

const upload = multer({
    storage: multer.diskStorage({
        destination: (req, file, callback) => {
            callback(null, "./images")
        },
        filename: (req, file, callback) => {
            callback(null, file.originalname)
        }
    })
})

app.post("/single", upload.single("upload"), (req, res) => {
    console.log(req.file);
    res.send("Testing123")
})

故障原因与修复方案

根因1:错误手动干预Content-Type与boundary生成

multipart/form-data请求的boundary分隔符是客户端根据请求体实际内容动态生成的,手动写死Content-Type、手动填写固定boundary值,都会导致头信息里的boundary和实际请求体使用的分隔符不匹配,触发格式错误。

  • 修复操作:打开Postman的Headers面板,把所有手动添加的Content-Type相关条目全部删除,不要做任何手动设置Content-Type的操作,让Postman在发送请求时自动生成带正确boundary的Content-Type头。同时检查Postman设置,确认没有开启「排除Content-Type请求头」的选项。

根因2:Postman表单字段名与multer配置不匹配

代码中upload.single("upload")明确指定了multer只会解析字段名为upload的上传文件,如果Postman的Body面板选择form-data格式后,文件上传项的key名不是upload(比如填成了file、image、fileUpload等自定义名称),或者key对应的类型选成了Text而非File,multer都不会解析该文件,直接返回req.file为undefined。

  • 修复操作:进入Postman的Body面板,选择form-data格式,新增一行条目:
    • Key栏填写upload,右侧下拉选项选择File(不要选默认的Text)
    • Value栏点击「Select Files」选择本地要上传的目标文件

其他排查项

  • 确认项目根目录下存在名为images的文件夹,multer不会自动创建配置里指定的存储目录,目录不存在时会出现无报错但文件解析失败的情况,手动新建对应目录即可。
  • 确认Postman没有开启全局代理、没有安装会篡改请求头的插件,这类工具会抹除自动生成的boundary参数,导致服务端解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:36:19