使用多个文件读取多部分表单数据

Read multipart form data with multiple files

我正在将多部分表单数据传递到 API 端点。数据作为模型传递,如下所示:

public class AttachmentModel
{
    public HttpFile Data { get; set; }
    public string Description { get; set; }
    public Attachment Attachment => new Attachment
    {
        Data = Data?.Buffer ?? new byte[0],
        Description = Description,
        FileName = Data?.FileName
    };
}

这正常工作,文件正确解析。我希望能够一次上传多个文件,发送的多部分表格似乎是正确的,在 Data:

下上传了多个文件
------WebKitFormBoundarypABSUgXhqOWGIbhU
Content-Disposition: form-data; name="Description"

------WebKitFormBoundarypABSUgXhqOWGIbhU
Content-Disposition: form-data; name="Data"; filename="file1.pdf"
Content-Type: application/pdf

------WebKitFormBoundarypABSUgXhqOWGIbhU
Content-Disposition: form-data; name="Data"; filename="file2.pdf"
Content-Type: application/pdf

------WebKitFormBoundarypABSUgXhqOWGIbhU--

然而,在模型上,如果我将 Data 更改为 IEnumerable<HttpFile>,则它为空。如何传递数据以接收所有文件?

我让它工作的方法是编辑多部分表单数据,以便发送每个文件的名称都有自己的索引:

------WebKitFormBoundarypABSUgXhqOWGIbhU
Content-Disposition: form-data; name="Description"

------WebKitFormBoundarypABSUgXhqOWGIbhU
Content-Disposition: form-data; name="Data[0]"; filename="file1.pdf"
Content-Type: application/pdf

------WebKitFormBoundarypABSUgXhqOWGIbhU
Content-Disposition: form-data; name="Data[1]"; filename="file2.pdf"
Content-Type: application/pdf

------WebKitFormBoundarypABSUgXhqOWGIbhU--

然后在模型中我将数据更改为 HttpFile 列表:

public List<HttpFile> Data { get; set; } = new List<HttpFile>();