【问题标题】:Reading MVC4 WebApi Multipart Data读取 MVC 4 Web Api 多部分数据
【发布时间】:2012-08-20 04:25:50
【问题描述】:

我正在向我的 WebApi 控制器发送多部分表单数据。我感兴趣的内容包括图像和另一个非图像值。我可以读取图像没问题,但不知道如何读取 username 部分(以 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 =>
{ 
    ...
}

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

    关于这个here有一篇好文章

    您的provider 变量应该有一个名为FormData 的NameValueCollection 属性。因此,您应该能够执行以下操作:

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

    注意。我必须更新我的引用才能看到 FormData 属性。我的 RC 版本是: Microsoft.AspNet.WebApi.Client.4.0.20505.0 使用 Nuget 更新所有 WebApi 和 MVC 4 引用给了我 Microsoft.AspNet.WebApi.Client.4.0.20710.0。

    【讨论】:

    • “NB”代表什么?
    • 好的; FWIW,我也不是豆子。
    • 也许这意味着不错?
    【解决方案2】:

    所以我发现我认为可能是一种 hacky 方式来做到这一点:

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

    有没有更受欢迎的方法?

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 2012-03-30
      • 1970-01-01
      • 2023-04-04
      • 2021-05-16
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多