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

Postman发送含文件的请求参数调用.NET接口报415错误排查

问题原因

返回415 Unsupported Media Type是两个配置错误导致的:

  • 接口未显式声明支持multipart/form-data请求类型。ASP.NET Core默认的输入格式化器仅处理application/json格式的请求体,收到表单格式请求时找不到匹配的格式化器,直接返回415状态码。
  • 模型定义存在绑定缺陷。Content字段声明为object类型时,默认模型绑定器无法自动映射上传的文件流,不管是JSON绑定器还是表单绑定器都无法识别文件与该字段的对应关系。
实现方案

该传参需求完全可以实现,分后端改造、Postman配置两部分操作:

后端改造

  1. 为接口添加必要特性,强制从表单绑定数据:
[HttpPost("stream")]
[Consumes("multipart/form-data")]
public async Task<IActionResult> UploadStreamAsync([FromForm] FileUploadRequest request)
{
  // 业务实现代码
}

必须添加[FromForm]特性指定参数绑定源为表单,否则框架仍会默认尝试从JSON体绑定数据

  1. 调整模型定义,不要用object作为文件接收字段类型。ASP.NET Core的默认绑定器仅支持用IFormFile类型接收上传的文件,修改后模型如下:
public class FileUploadRequest
{ 
    public string FileName { get; set; }
    public string FileType { get; set; }
    public string Path { get; set; }
    public IFormFile Content { get; set; }
}

如果要兼容Content字段接收JSON、byte[]、Stream三种类型的数据,不要依赖默认模型绑定,需要自行实现IModelBinder接口,根据请求类型判断绑定逻辑:请求为JSON格式时走反序列化逻辑,请求为表单格式时提取文件流转换为对应类型赋值即可。

Postman配置

  1. 不要手动设置Content-Type请求头。选择form-data请求体时,Postman会自动生成带正确boundary参数的multipart/form-data请求头,手动设置会因为缺少boundary参数导致请求解析失败。
  2. 请求体选择form-data类型,按如下规则填写字段:
    • 字段名FileName,类型选Text,值填对应文件名
    • 字段名FileType,类型选Text,值填对应文件类型
    • 字段名Path,类型选Text,值填对应存储路径
    • 字段名Content,类型选File,值选择本地要上传的文件
  3. 不需要额外封装JSON结构传参,表单绑定器会自动将同名字段映射到模型的对应属性。
之前方案失败的原因
  • 第一种逐字段填表单的方案:接口未添加[Consumes("multipart/form-data")]和[FromForm]特性,框架始终按JSON格式解析请求,根本不会进入表单绑定流程,直接返回415。
  • 第二种JSON+文件拆分传参的方案:除了上述接口特性缺失的问题,将其他字段封装为JSON字符串传递时,表单绑定器无法自动拆解JSON内容映射到模型的平级属性,会导致字段绑定为null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:06:31