是否可以使用www.example.com最小API从DTO上传文件?asp.net minimal api's ?
我试过这个:
public class MyDto
{
public string BlaBlaBla { get; set; }
public List<ListOfUselessStuff> MyList { get; set; }
public IFormFile MyFile { get; set; }
}
终点
app.MapPost("MyRoute", DoStuff)
.WithTags("Tags")
.Accepts<MyDto>("multipart/form-data")
.Produces<NewlyCreatedDto>(200)
.ProducesValidationProblem(400)
.ProducesProblem(401)
.ProducesProblem(403)
.RequireAuthorization(Policies.RequireAdmin);
最后做点什么:
private async Task<IResult> CreateQuestion([FromServices]IMediator mediator, [FromForm] MyDto dto)
{
//do stuff
}
但我只是设法得到:
"应为支持的JSON媒体类型,但获得的是" multipart/form-data;边界=--------------------------29663231333811935594178759367 ""。
2条答案
按热度按时间wgeznvg71#
目前还没有对绑定表单的支持,但根据ASP.NET核心官方文档,将来会有。
不支持从窗体绑定。这包括绑定IFormFile。我们计划将来添加对IFormFile的支持。
https://learn.microsoft.com/en-us/aspnet/core/tutorials/min-web-api?view=aspnetcore-6.0&tabs=visual-studio#differences-between-minimal-apis-and-apis-with-controllers
您所能做的就是注入HttpRequest并访问表单属性,就像在这个解决方案https://stackoverflow.com/a/71499716/11618303中一样。
blpfk2vs2#
NET 7已经解决了这个问题。增加了对IFormFile和IFormFileCollection的支持。您应该可以在MediatR管道中使用它。
参考:.NET 7对文件上载绑定的最低API支持