上载多个带有curl的文件将导致空的IFormFile列表

时间:2018-08-10 13:39:47

标签: c# curl file-upload asp.net-core

我有一个ASP Net Core控制器,我想使用该控制器上载多个文件。我已按照this page中的说明进行操作。我的控制器声明如下:

[HttpPost("/api/v1.0/assets/{id}")]
public async Task<ApiResponse<Exception>> Post(string id, List<IFormFile> files)

要测试控制器是否正常工作,我使用curl调用了它,如下所示:

curl -v -X POST -F "files[]=@thing.json" -F "files[]=@thing.zip" -H 'X-Custom-header1:abc1234' -H 'X-Custom-Header2:abc1234' http://localhost:57535/api/v1.0/assets/asset00134

但是我得到一个空的files列表。但是,如果我检查HttpContext.Request的值,我会发现HttpContext.Request.Form.Files.Count=2,关于我的文件的所有信息(名称,长度等)都在那里并且是正确的。

为什么它没有映射到我的List<IFormFile>参数上?

我已经在互联网上进行了搜索,但是在所有示例中,我都能找到与我一样的代码,所以我不知道区别在哪里。

1 个答案:

答案 0 :(得分:0)

已解决。我这是一个愚蠢的错误。如果将List<IFormFile>实例的名称设置为files,则在curl命令中,必须将其命名为files,而不是像我一样命名的files[]。修复该问题后,它就像一种魅力。