Asp.net web api 在MultipartFormDataStreamProvider中将formdata与filedata关联,以进行多文件上载

Asp.net web api 在MultipartFormDataStreamProvider中将formdata与filedata关联,以进行多文件上载,asp.net-web-api,Asp.net Web Api,我正在创建一个RESTful web服务,允许最终用户上传带有相关元数据的文件(对于每个上传的文件)。我正在研究如何使用这门课。该类允许从其formdata属性读取formdata(在我的例子中是元数据),并从其filedata属性读取文件。为此,我参考了ASP.net网站上的示例 查询: 如何将formdata中发布的元数据与filedata中上载的文件相关联 例如假设formdata中的元数据是[{“property1”:value1,“property2”:value2},{“proper

我正在创建一个RESTful web服务,允许最终用户上传带有相关元数据的文件(对于每个上传的文件)。我正在研究如何使用这门课。该类允许从其formdata属性读取formdata(在我的例子中是元数据),并从其filedata属性读取文件。为此,我参考了ASP.net网站上的示例

查询:

如何将formdata中发布的元数据与filedata中上载的文件相关联


例如假设formdata中的元数据是[{“property1”:value1,“property2”:value2},{“property1”:value3,“property2”:value4}],并且在POST请求中上载了2个文件。我如何知道JSON数据中的哪个项目(在formdata属性中可用)对应于哪个上传的文件(在filedata属性中可用)?这是否与从客户处发布的顺序相同

我今天碰巧发现了这个。。。(适用于可能有相同困惑的人)

似乎MultipartFormDataStreamProvider是“处理MIME多部分HTML表单数据,它是表单数据和文件内容的组合。” 因此,您有一个表单值列表以及许多文件都是同一个post请求的一部分。

但就像网络上的许多例子一样,一种进入网络的方式是

// This illustrates how to get the file names.
foreach (MultipartFileData file in streamProvider.FileData)
{
    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
    Trace.WriteLine("Server file path: " + file.LocalFileName);


// Show all the key-value pairs.
foreach (var key in streamProvider.FormData.AllKeys)
{
    foreach (var val in streamProvider.FormData.GetValues(key))
        {
            Trace.WriteLine(string.Format("{0}: {1}", key, val));
        }
}