Web API - 使用MultipartFormDataStreamProvider时,FormData始终为null

时间:2013-08-21 08:30:39

标签: file-upload asp.net-web-api multipartform-data

我正在尝试使用jquery将一个输入文件和一些来自用户的额外输入发布到Web API。

在web API中我使用MultipartFormDataStreamProvider来读取数据,这里是代码: -

 var provider = new MultipartFormDataStreamProvider(<some local path>);
 await request.Content.ReadAsMultipartAsync(provider);
 var formData = provider.FormData;
 foreach (string key in formData.Keys)
 {
 }
 foreach (var file in provider.FileData)
 {
    FileInfo fileInfo = new FileInfo(file.LocalFileName);
 }

在FileData中我得到输入文件,但FormData没有键。

我在下面的文章中提到了实现这个

http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2

我不确定这里有什么问题......如果有人能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

HTML中的每个表单输入控件(<input />, <select />, <textarea />等)都有名称属性吗?没有名称的表单输入控件无法成功(即浏览器不会发布其值)。

答案 1 :(得分:0)

下面的代码对我有用 -

var provider = new MultipartMemoryStreamProvider();
    await request.Content.ReadAsMultipartAsync(provider); 
    foreach (HttpContent ctnt in provider.Contents) 
    { 
            if (ctnt != null && ctnt.Headers.ContentDisposition != null) 
            { 
               if (ctnt.Headers.ContentDisposition.Name == "\"fileToUpload\"") 
               { 
                  //code goes here
               } 
            } 
    }