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

Postman同时传JSON与图片到.NET API时IFormFile属性为空求助

问题原因

  • Image属性为null是请求配置和后端绑定逻辑共同导致的,核心问题有两个:
  1. 请求格式冲突:HTTP协议不支持单个请求同时使用application/json和multipart/form-data两种格式。你在Postman里同时填写了raw JSON和form-data内容,实际只会生效你当前选中的Body类型,form-data里的图片内容根本不会被正常发送到后端。
  2. 参数绑定特性错误:你在接口参数上加了[FromBody],这个特性只会从JSON格式的请求体中解析字段,而IFormFile类型的文件只能从multipart/form-data格式的表单中绑定,JSON本身无法直接承载二进制文件内容,自然无法给Image属性赋值。

正确实现方式

你当前的尝试不符合HTTP协议规范,按照以下步骤调整即可正常接收图片和业务参数:

1. 调整后端接口代码

将控制器方法的[FromBody]替换为[FromForm],让接口适配form-data格式的请求:

[HttpPost]
[Route("CreateUserPreference")]
public async Task<ActionResult> CreateUserPreference([FromForm] UserPreference userPreference)
{
   if (ModelState.IsValid)
   {
      try
      {
         var userPreferenceId = await _userPreference.Create(userPreference);
         if (userPreferenceId > 0)
             return Ok("用户偏好已添加");
      }
      catch(Exception)
      {
         return BadRequest();
      }
  }
  return BadRequest();
}

2. 调整Postman请求配置

不要使用raw JSON模式,所有参数都放到form-data中填写:

  • 所有文本类业务参数(Name、Location、DateOfBirth等),直接在form-data里填写和实体类属性名一致的key,再填入对应的value即可
  • Image参数的key要和实体类的Image属性名完全一致,类型选择File,然后选择本地要上传的图片
  • 不需要额外设置Content-Type请求头,Postman会自动识别form-data格式并生成正确的请求头

可选替代方案(仅适合小图片)

如果你一定要用JSON格式传递所有内容,可以把图片转成Base64字符串,放到JSON的一个自定义文本字段中,后端接收后再把Base64字符串转成文件流存储即可。这种方式会让请求体积增大33%左右,不适合上传大尺寸图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:06