2013-08-21 31 views
1

我想將輸入文件以及用戶使用jquery的一些額外輸入發佈到Web API。Web API - FormData在使用MultipartFormDataStreamProvider時總是爲空

在網絡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

我不知道這裏有什麼問題......如果有人可以幫我理清這個問題?

+0

我不知道這是否有差別,但你引用的文章中,他使用了formData.AllKeys財產。微軟關於Keys和AllKeys之間差異的文檔也不清楚。值得一試雖然。 – Brett

+0

@Brett formData.AllKeys也是空的。 – devson

+0

嗯。可以肯定的是,這個代碼是否在你的控制器上的'public async Task Post()'函數中,並且'ententype ='multipart/form-data''屬性是在你的'

'標籤上設置的?首先覆蓋所有的基地。 – Brett

回答

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 
       } 
      } 
    } 
0

您的HTML中的每個表單輸入控件(<input />, <select />, <textarea />等)都有名稱屬性嗎?沒有名字的表單輸入控件不能成功(即瀏覽器不會發布它們的值)。

+0

是的,他們有名字屬性。 – devson