从Angular端向.NET Core API传递Form Data数据遇到问题如何解决?
问题根因
你当前使用的手动指定multipart/form-data请求头的代码是问题的直接诱因。multipart/form-data类型的请求必须附带boundary分隔符参数,用来区分表单内不同字段的边界。浏览器在发送FormData类型的请求时,会自动生成随机boundary值并拼接在Content-Type头中,如果你手动硬编码该请求头,会覆盖浏览器的自动填充逻辑,后端.NET Core接收到请求后无法正确拆分表单字段,进而抛出解析异常。
修复步骤
- 移除手动配置的Content-Type请求头,直接将
FormData实例作为请求体传给Angular的HttpClient即可,框架会自动识别请求体类型,补充带正确boundary的请求头:
// 初始化FormData并填充字段 const formData = new FormData(); formData.append('file', 上传的文件对象, 文件名); formData.append('otherParam', '参数值'); // 直接发送请求,不需要额外配置headers this.http.post('你的.NET Core接口地址', formData).subscribe({ next: (res) => console.log('请求成功', res), error: (err) => console.error('请求失败', err) });
- 检查.NET Core接口配置,确保接收参数前加
[FromForm]特性,示例如下:
// 接口定义 [HttpPost] public async Task<IActionResult> SubmitForm([FromForm] FormDataDto request) { // 业务逻辑处理 return Ok(); } // 接收DTO定义 public class FormDataDto { public IFormFile File { get; set; } public string OtherParam { get; set; } }
- 若仍有异常,可参考报错截图定位具体问题:

内容的提问来源于stack exchange,提问作者Patel Dharmendra
相关产品推荐
相关产品推荐

