如何为接受对象列表中的文件列表的 API 端点创建 POST 和 form-data?

How to create a POST with form-data for an API endpoint that accepts a list of files inside a list of objects?

我正在尝试在邮递员中创建一个请求,以将文件上传到需要以下形状的 dotnet 核心端点:

public class MyDto
{
   public DateTime Time { get; set; }
   public List<Logs> Files { get; set; } = null!;
   public class Logs
   {
       public ServiceEnum Service { get; set; }
       public List<IFormFile> LogFiles { get; set; }
   }
}

动作的函数签名:

[HttpPost("{​id}​/log")]
public async Task<ActionResult> SaveLogs([FromRoute] string id, [FromForm] MyDto myDto)

我的邮递员请求如下所示:

当我尝试调试时,我可以看到 myDto.Files[0].Service 已设置,myDto.Files[0].LogFiles 为空。

我原以为上传多个文件会从请求映射到 myDto.Files[0].LogFiles。我可能错误地格式化了请求中的密钥,但此时我已经尝试了多种不同的密钥格式。

我用其他简单类型和复杂类型进行测试,它们可以使用方括号和post成功(IFormFile除外)。也许这是邮递员的设计。无论如何,无论它是什么类型。你总是可以 post 喜欢 xx.xx.xx.

更改您的 post 数据,如下所示: