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

时间:2017-02-21 22:19:32

标签: c# .net forms multipartform-data

我将多部分表单数据传递给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>,则为空。如何传递数据以接收所有文件?

1 个答案:

答案 0 :(得分:1)

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

------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>();