【问题标题】:How to receive MultipartFormData on ASP.NET C#如何在 ASP.NET C# 上接收 MultipartFormData
【发布时间】:2017-03-15 15:38:04
【问题描述】:

我正在和一个 iOS 人一起工作。他想通过 WebAPI ASP.NET 上传图片。我必须拨打一个可以接收这些图像的电话。
他说他正在使用 AFNetworking 通过AFMultipartFormData 发送数据。我的问题是,我怎样才能在我的最后收到这个?我应该以 JSON 格式获取数据吗?或者为此需要采取哪些措施?我想知道整个过程,因为这是我第一次使用 MultipartFormData

更新
根据我使用的答案:

[HttpPut]
        public IHttpActionResult GetPatientFilesAction(int id, Model.Patients.PatientFiles patientFile)
        {
            Model.Patients.PatientFiles pFile=new Model.Patients.PatientFiles();
            try
            {
                HttpPostedFile xmlFile = HttpContext.Current.Request.Files[0];

                var fileForm = HttpContext.Current.Request.Form;
                var fileKey = HttpContext.Current.Request.Form.Keys[0];
                string[] jsonformat = fileForm.GetValues(fileKey);
                 pFile = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.Patients.PatientFiles>(jsonformat[0]);
            }
            catch (Exception ex)
            {

                pFile.ErrorMessage = ex.ToString();
            }
            return Ok(pFile);
        }

但是 iOS 家伙得到了:

请求失败:不支持的媒体类型 (415)

【问题讨论】:

  • 您是在编写接收 Web API 控制器吗?还是要调用他们现有的 Web Api 端点?
  • 就是这样……首先上传图片……上传完之后剩下的 JSON 对象将来自 IOS 应用程序。
  • 你可以在同一个HTTP请求中同时发送图片和json数据。

标签: c# asp.net json multipartform-data multipart


【解决方案1】:

在 Web API 控制器中,您可以使用以下代码访问图像文件:-

HttpPostedFile xmlFile = HttpContext.Current.Request.Files[0];

如果您发布了多个文件,请将 Files[0] 替换为相应的计数 1 或 2 等。

然后您可以使用代码访问 JSON:

var fileForm = HttpContext.Current.Request.Form;
var fileKey = HttpContext.Current.Request.Form.Keys[0];
string[] jsonformat = fileForm.GetValues(fileKey);
var yourModel = JsonConvert.DeserializeObject<YourClassType>(jsonformat[0]);

如果您发布了多个 json 字符串,请将 jsonformat[0] 替换为相应的计数 1 或 2 等。

【讨论】:

  • 兄弟谢谢你的回答。但是我有一个问题,因为我处于非常基本的 webAPI 级别。如果我错了,请清除我...这就是我要对 iOS 人说的“这是 URL:URL_OF_THIS_CALL 它是一个 POST 请求,您可以将 JSON 放入您的参数中并发送 AFMultipartFormData。然后使用您的答案会为我做所有这些吗?我不知道这是否有任何意义,但如果我错了,请纠正我。
  • 您将向 iOS 开发人员提供规范,说明您的 API 将接受 Content-Type: multipart/form-data 的请求,并将图像作为多部分表单数据负载发送。然后他们应该能够实现答案中提到的内容。
  • 他收到请求失败:不支持的媒体类型 (415)。另请参阅更新后的问题。
  • 另外,如果你能在这里看到这个问题:stackoverflow.com/questions/40384489/… 这是 iOS 家伙正在尝试的事情。
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 2017-11-23
  • 2011-08-06
相关资源
最近更新 更多