将formdata与MultipartFormDataStreamProvider中的filedata相关联,以进行多文件上载

时间:2013-09-20 22:40:24

标签: asp.net-web-api

我正在创建一个RESTful Web服务,允许最终用户上传包含相关元数据的文件(针对每个上传的文件)。我正在研究使用MultipartFormDataStreamProvider类。该类允许从formdata属性读取formdata(我的情况下的元数据)以及来自它的filedata属性的文件。为此,我指的是ASP.net网站上的示例Sending HTML Form Data

查询:

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

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

1 个答案:

答案 0 :(得分:0)

我今天碰巧遇到了这个......(对于那些可能有同样困惑的人)

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

但是就像网上的许多问题一样,只有一种方法可以进入

// 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));
        }
}