我正在使用Postman来测试.Net Core 2.1 Web API。我从这开始,它工作 - 我能够从Postman发送文件到我的Web API。
Web.API
[HttpPost("uploads")]
public IActionResult FileUpload(IFormFile myfile)
{
...
return Ok();
}
但是,我需要传递一些额外的表单数据和文件。基于我见过的其他帖子,我尝试了以下内容:
[HttpPost("uploads")]
public IActionResult FileUpload(UploadFile data)
{
...
return Ok();
}
public class UploadFile {
public IFormFile myfile {get; set;}
public bool forceOverwrite {get; set;}
}
现在从邮递员发帖导致“输入无效”。我已经做了一些搜索,似乎找不到任何已经得到类似工作的人。
更新
我也试过以下几点;但是,附加值总是假的 - 即使发送为真。
public IActionResult FileUpload(IFormFile myfile, bool forceOverwrite)
更新2
这是我在Postman中添加的内容,以及它在Fiddler中的显示方式。 (P.S。你可以忽略POST中的路由与我的代码中列出的路由不匹配的事实 - 我选择简化命名方面的帖子。
要在.NET Core Web API中绑定FormData,您需要添加FromForm
属性,如下所示
[HttpPost("uploads")]
public IActionResult FileUpload([FromForm]UploadFile data)
{
return Ok();
}
您可以尝试以下方法
public class UploadFile
{
public bool forceOverwrite { get; set; }
public IFormFile File { get; set; }
}
并在你的控制器
[HttpPost]
public async Task<IActionResult> UploadImage(UploadFile upload)
{
var file = upload.File; // This is the IFormFile file
var param = upload.forceOverwrite; // param
var filePath = Path.GetTempFileName();
using (var stream = new FileStream(filePath, FileMode.Create))
await file.CopyToAsync(stream);
return Ok(new { count = 1, path = filePath,filename=upload.forceOverwrite });
}
这是邮递员的输出