.net core webap 使用swagger 调用Post(iIFormFile? file) 报415,使用[FromForm]报[FromForm] attribute used with IFormFile. Please refer to
时间: 2024-12-11 07:29:20 浏览: 13
.NET Core 中使用 Swagger 调用 API 时,特别是涉及上传文件 (iIFormFile) 的 POST 请求,遇到 415 Unsupported Media Type 错误通常是由于客户端发送的内容类型 (Content-Type) 不符合服务器期望的格式。
当你在 `Post` 方法上标注了 `[FromForm]` 或与 `iIFormFile` 相关的注解,服务器期望的是 `multipart/form-data` 格式的数据,这是处理表单上传文件的标准内容类型。如果直接从 Swagger UI 发送请求,它可能默认使用 JSON 格式,而不是正确的表单数据格式。
解决这个问题,你需要按照以下步骤操作:
1. **检查Swagger配置**:确保在Swagger设置中,POST请求接收字段的`consumes`属性已包含`multipart/form-data`,这告诉API应该接受哪种媒体类型。
```json
"paths": {
"/api/upload": {
"post": {
"tags": ["Your Tag"],
"operationId": "UploadFile",
"summary": "Upload a file",
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary"
}
},
"required": ["file"]
}
}
},
"consumes": [
"multipart/form-data"
]
},
"responses": { ... }
}
}
}
```
2. **更新客户端请求头**:如果是手动测试或使用第三方工具发送请求,需要确保请求头包含 `Content-Type: multipart/form-data`。
3. **验证模型**:确认你的控制器方法里的参数接收器是否匹配 Swagger 配置,即 `iIFormFile file` 是否正确。
如果你已经尝试了以上步骤还是出现问题,可以提供一些额外信息,比如具体的API文档配置、客户端发送请求的方式以及错误消息详细内容,以便更好地诊断问题。
阅读全文