我正在使用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中的路由与我的代码中列出的路由不匹配的事实-我选择简化有关命名的帖子内容。
答案 0 :(得分:11)
要在.NET Core Web API中绑定FormData,您将需要添加FromForm
属性,如下所示
[HttpPost("uploads")]
public IActionResult FileUpload([FromForm]UploadFile data)
{
return Ok();
}
答案 1 :(得分:0)
您可以尝试以下
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 });
}
这是邮递员的输出