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默认生成的Content-Type,请求抛出
- 关闭重启Postman后,
Error: Malformed part header报错不再出现,但req.file始终为undefined - 已尝试的无效操作:
- 不手动设置Content-Type,交由Postman自动生成
- 将Content-Type设置为
multipart/mixed类型 - 参照同类公开问题的操作教程逐步配置
初始Postman请求头配置截图
参考方案操作截图
后端实现代码
服务端基于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」选择本地要上传的目标文件
- Key栏填写
其他排查项
- 确认项目根目录下存在名为
images的文件夹,multer不会自动创建配置里指定的存储目录,目录不存在时会出现无报错但文件解析失败的情况,手动新建对应目录即可。 - 确认Postman没有开启全局代理、没有安装会篡改请求头的插件,这类工具会抹除自动生成的boundary参数,导致服务端解析失败。
内容的提问来源于stack exchange,提问作者wel
相关产品推荐
相关产品推荐

