我有一个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>
参数上?
我已经在互联网上进行了搜索,但是在所有示例中,我都能找到与我一样的代码,所以我不知道区别在哪里。
答案 0 :(得分:0)
已解决。我这是一个愚蠢的错误。如果将List<IFormFile>
实例的名称设置为files
,则在curl命令中,必须将其命名为files
,而不是像我一样命名的files[]
。修复该问题后,它就像一种魅力。