【问题标题】:read json data and image file as multipart form data in web api 2在 web api 2 中读取 json 数据和图像文件作为多部分表单数据
【发布时间】:2017-02-23 14:31:26
【问题描述】:

我想将如下所示的多部分表单数据发布到 WEB API 2 控制器。我的数据将有 JSON 和图像文件。请帮助我了解 c# api 控制器代码将如何用于以下数据。

目前我在Request.Content.ReadAsMultipartAsync(provider);遇到错误:

MIME 多部分流意外结束。 MIME 多部分消息不完整

var uploadPath = HttpContext.Current.Server.MapPath("~/Userimage/");
Directory.CreateDirectory(uploadPath);
var provider = new MultipartFormDataStreamProvider(uploadPath);
await Request.Content.ReadAsMultipartAsync(provider);

// Files
//
foreach (MultipartFileData file in provider.FileData)
{
    Debug.WriteLine(file.Headers.ContentDisposition.FileName);
    Debug.WriteLine("File path: " + file.LocalFileName);
}

// Form data
//
foreach (var key in provider.FormData.AllKeys)
{
    foreach (var val in provider.FormData.GetValues(key))
    {
        Debug.WriteLine(string.Format("{0}: {1}", key, val));
    }
}
return Request.CreateResponse(HttpStatusCode.OK);
---------------------------acebdf13572468
Content-Disposition: form-data; name="modelclass"
Content-Type: application/json

{
  "MessageID": 1,
  "SenderID": 2,
  "userType": "sample string 3",
  "msgCategory": "sample string 4",
  "msgContent": "sample string 5",
  "msgDistributedTo": "sample string 6"
}
---------------------------acebdf13572468
Content-Disposition: form-data; name="fieldNameHere"; filename="bg4.jpg"
Content-Type: image/jpeg

<@INCLUDE *C:\Users\Lenovo1\Pictures\bg4.jpg*@>
---------------------------acebdf13572468--

【问题讨论】:

    标签: forms asp.net-web-api asp.net-web-api2 multipart


    【解决方案1】:

    几个月前我一直在尝试这样做,结果得到了以下代码:

    if (!request.Content.IsMimeMultipartContent("form-data"))
    {
        throw new InvalidOperationException("Media type not supported");
    }
    
    var root = HttpContext.Current.Server.MapPath("~/App_Data");
    var provider = new MultipartFormDataStreamProvider(root);
    await request.Content.ReadAsMultipartAsync(provider);
    

    您的代码的一个可能问题是您尝试创建一个应该已经存在的目录。 还可以尝试在代码开头检查内容类型。

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      相关资源
      最近更新 更多