错误原因分析: Error: Multipart: Boundary not found

本文分析了在使用Express和multer中间件处理文件上传时遇到的'Error: Multipart: Boundary not found'错误。问题源于Content-Type头部缺少multipart/form-data的boundary值。通过检查Chrome Network发现请求头Content-Type设置不当,可能是xhr.setRequestHeader覆盖了表单的enctype设置。解决方案是避免重复设置Content-Type,防止意外覆盖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

d:\fullstack\es6fullstack\10node3>node server_multer.js
Error: Multipart: Boundary not found
at new Multipart (\node_modules\busboy\lib\types\multipart.js:58:11)
at Multipart (\node_modules\busboy\lib\types\multipart.js:26:12)
at Busboy.parseHeaders (\node_modules\busboy\lib\main.js:71:22)
at new Busboy (\node_modules\busboy\lib\main.js:22:10)
at multerMiddleware (\node_modules\multer\lib\make-middleware.js:33:16)
at Layer.handle [as handle_request] (\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (\node_modules\express\lib\router\index.js:317:13)
\node_modules\express\lib\router\index.js:284:7
at Function.process_params (\node_modules\express\lib\router\index.js:335:12)
at next (\node_modules\express\lib\router\index.js:275:10)

错误原因: Multipart没有找到Boundary
分析:
使用Express+multer中间件 上传文件的时候出现的问题。
上传文件 是POST请求 multipart/form-data格式的 form表单
查看网络分析
上图是查看Chrome Network进行分析 ,然后查看请请请求头, 发现Content-Type: multipart/form-data 后面没有跟上boundary
正确的网络请求头
正确的Content-Type: mutlipart/form-data; boundary = -----xxxx这种形式的
综上推测 设置请求头的时候 多次设置了,覆盖了原有表单enctype=‘multipart/form-data’
最终查找 在xhr.setRequestHeader中 覆盖了 表单form中的 enctype 设置的mutlipart/form-data

综上: 不需要重复设置 Content-Type: mutipart/form-data 否则可能会覆盖原有的, 造成非预期的错误。
具体内部原理 xhr.setRequestHeader 对于Content-Type 和 form表单中enctype的设置 究竟内部如何覆盖,未完待续,有时间在更新编辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值