Postman提交含IFormFile的UploadRequest请求报415错误,如何解决?
解决文件上传415 Unsupported Media Type错误的方案
问题根源
你遇到的415错误,核心原因是接口参数绑定方式与请求格式不匹配:
- 接口用了
[FromBody],这是告诉ASP.NET Core要从JSON/XML格式的请求体中解析数据; - 但你要上传文件,必须使用
multipart/form-data格式,这种格式无法被[FromBody]解析,因此返回媒体类型不支持的错误。
具体修复步骤
1. 修改API接口的参数绑定
将接口中的[FromBody]替换为[FromForm],或者直接移除[FromBody](ASP.NET Core对multipart/form-data的模型绑定默认支持):
[AllowAnonymous] [HttpPost("api/[namespace]")] public override async Task<ActionResult> HandleAsync([FromForm] UploadRequest request) { // 你的业务逻辑代码 }
2. 调整Postman的请求配置
按照以下步骤配置Postman请求:
- 请求方法选择
POST,填写正确的接口URL; - 切换到Body标签,选中
form-data选项; - 添加三个字段:
- 字段名
File,类型选择File,然后选择要上传的文件(支持多选,对应模型里的List<IFormFile>); - 字段名
EntityType,类型选择Text,输入对应的整数值; - 字段名
ReferenceId,类型选择Text,输入对应的整数值;
- 字段名
- 无需手动设置
Content-Type,Postman会自动生成multipart/form-data; boundary=xxx的请求头。
原理说明
[FromForm]会指示ASP.NET Core从multipart/form-data格式的请求中解析各个表单字段,包括文件流和普通参数,刚好匹配你的UploadRequest模型结构,这样就能正确接收文件和参数了。
内容的提问来源于stack exchange,提问作者Yener
相关产品推荐
相关产品推荐

