我正在开发 dotnet 核心 WebAPI 2.1,但我找不到将图像发送到 Body 的方法。
Controller 看起来像这样:
[HttpPost("api/image")]
public IActionResult Post([FromBody]IFormFile file)
{
var filePath = Path.GetTempFileName();
if (file.Length > 0)
{
return Ok();
}
return BadRequest();
}
我已经尝试过使用Consumes
[Consumes("application/json", "application/json-patch+json", "multipart/from-data")]
同样在 postman 中,我将 Content-Type 设置为 multipart/form-data
最佳答案
我找到了 .Net Core 2.1/2.2 的解决方案 here
POST multiple files from POSTMAN
[HttpPost]
public async Task<IActionResult> UploadSingleFile([FromForm(Name = "file")] IFormFile file)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
var IDsList = new IDsList();
try
{
var id = SaveFile(file);
IDsList.Files.Add(new IDsList.FileInfo() { id = id, fileName = file.FileName });
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
return Content(JsonConvert.SerializeObject(IDsList), "application/json");
}
[HttpPost("UploadFiles")]
public async Task<IActionResult> UploadFiles([FromForm(Name = "files")] ICollection<IFormFile> files)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
//var files = Request.Form.Files?.GetFiles("files");
String message = String.Empty;
int filesCounter = 0;
var IDsList = new IDsList();
foreach (var file in files)
{
if (file.Length == 0)
message = message + $"errorDescription {file.FileName}\n";
try
{
var id = SaveFile(file);
IDsList.Files.Add(new IDsList.FileInfo() { id = id, fileName = file.FileName });
filesCounter++;
}
catch(Exception ex)
{
message = $"{message}{ex.Message}\n";
}
}
IDsList.message = $"Amount: {filesCounter}.\n{message}";
return Content(JsonConvert.SerializeObject(IDsList), "application/json");
}
关于c# - .net core 2.1 "POST"一个使用 Postman 的 IFormFile - 应用程序在未读取整个请求正文的情况下完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51424273/