当前正在尝试将 2 个图像和一个字符串发送到 API。
API调用:
var data = new
{
mode = info
};
pathData = JsonConvert.SerializeObject(data.ToString());
var content = new MultipartFormDataContent
{
{ new StreamContent(frontStream), "front", front.FullName },
{ new StreamContent(backStream), "back", back.FullName },
{ new StringContent(pathData, Encoding.UTF8, "application/json") }
};
using var client = new HttpClient();
var response = await client.PostAsync($"https://localhost:987987987/Upload", content);
尝试使用 [FromBody],但我仍然收到“不支持的媒体类型”响应。
API:
[HttpPost]
public async Task<IActionResult> Post(IFormFile front, IFormFile back, [FromBody] string mode)
{
return Ok();
}
非常感谢任何帮助,谢谢!
不幸的是,我认为
[FromBody]
和[FromForm]
不能一起工作。您不应将完整对象作为“application/json”发送,而应迭代 data
中的每个属性,并将其附加为 StringContent
以及 MultipartFormDataContent 的键。
string pathData = JsonConvert.SerializeObject(data);
Dictionary<string, dynamic> dataDict =
JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(pathData);
var content = new MultipartFormDataContent
{
{ new StreamContent(frontStream), "front", front.FullName },
{ new StreamContent(backStream), "back", back.FullName },
};
foreach (var prop in dataDict)
{
content.Add(new StringContent(prop.Value), prop.Key);
}
using var client = new HttpClient();
var response = await client.PostAsync($"https://localhost:987987987/Upload", content);
在上传 API 操作中,使用
UploadModel
作为参数修改方法签名:
public class UploadModel
{
public IFormFile front { get; set; }
public IFormFile back { get; set; }
public string mode { get; set; }
}
[HttpPost("Upload")]
public async Task<IActionResult> Post([FromForm] UploadModel model)
{
return Ok();
}