簡體   English   中英

閱讀MVC4 WebApi多部分數據

[英]Reading MVC4 WebApi Multipart Data

我正在將多部分表單數據發送到我的WebApi控制器。 我感興趣的內容包括圖像和另一個非圖像值。 我可以讀取圖像沒問題,但無法弄清楚如何讀取用戶名部分(以andy作為值)。 它不在提供程序的FormData屬性中。 我怎么才能得到它?

多部分表單數據

------------ei4KM7KM7ae0GI3Ef1gL6ei4ae0ae0
Content-Disposition: form-data; name="Filename"

image.jpg
------------ei4KM7KM7ae0GI3Ef1gL6ei4ae0ae0
Content-Disposition: form-data; name="username"

andy
------------ei4KM7KM7ae0GI3Ef1gL6ei4ae0ae0
Content-Disposition: form-data; name="Filedata"; filename="image.jpg"
Content-Type: application/octet-stream


------------ei4KM7KM7ae0GI3Ef1gL6ei4ae0ae0
Content-Disposition: form-data; name="Upload"

Submit Query
------------ei4KM7KM7ae0GI3Ef1gL6ei4ae0ae0--

控制器代碼

string root = System.Web.HttpContext.Current.Server.MapPath("~/App_Data");
MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(root);

var task = request.Content.ReadAsMultipartAsync(provider).ContinueWith<HttpResponseMessage>(o =>
{ 
    ...
}

在燈架上有一個很好的文章在這里

您的provider變量應具有名為FormData的NameValueCollection屬性。 因此,您應該能夠執行以下操作:

string username = provider.FormData.GetValues("username").SingleOrDefault();

NB。 我不得不更新我的引用以查看FormData屬性。 我的RC版本是:Microsoft.AspNet.WebApi.Client.4.0.20505.0使用Nuget更新所有WebApi和MVC 4引用給了我Microsoft.AspNet.WebApi.Client.4.0.20710.0。

所以我發現我認為這可能是一種hacky方式:

string username = provider.Contents.First(x=>x.Headers.ContentDisposition.Name == "\"username\"").ReadAsStringAsync().Result;

有更優選的方式嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM