2016-11-02 10 views
0

Я работаю с iOS-парнем. Он хочет загружать изображения через WebAPI ASP.NET. Я должен позвонить, который может получить эти изображения.
Он сказал, что использует AFNetworking для отправки данных через AFMultipartFormData. Мой вопрос в том, как я могу получить это в конце? Должен ли я брать данные в формате JSON? Или какие меры необходимо предпринять для этой цели? Я хочу знать весь процесс, так как это мой первый опыт работы с MultipartFormData.

UPDATE
На основании ответа я использовал это:Как получить MultipartFormData на ASP.NET C#

[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)

+0

Вы пишете получающий контроллер веб-API? или вы можете назвать их существующей конечной точкой Web Api? – uk2k05

+0

Это как ... Сначала изображения будут загружены ... после того, как все они будут загружены, остальная часть объекта JSON появится из приложения IOS. –

+0

Вы можете отправить как изображения, так и данные json в том же HTTP-запросе. –

ответ

1

Внутри веб-API контроллера вы можете получить доступ к файлу изображения, используя следующий код: -

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

Если у вас есть более чем один файлы размещены, заменить файлы [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 и т. д.

+0

bro благодарю вас за ответ. Но у меня вопрос, поскольку я нахожусь на очень базовом уровне webAPI. Очистите меня, если я ошибаюсь ... Это то, что я скажу человеку iOS ». Это URL: URL_OF_THIS_CALL это запрос POST, и вы можете поместить JSON в свои параметры и отправить его' AFMultipartFormData'. ответ будет делать все это для меня? Я не знаю, если это имеет какой-то смысл, но исправьте меня, если я ошибаюсь. –

+0

Вы предоставите разработчику iOS спецификацию о том, что ваш API будет принимать запросы с Content-Type: multipart/form-data и отправить изображение как полезную нагрузку данных из нескольких частей. Затем они должны иметь возможность достичь того, что указано в ответе. –

+0

он получает запрос: не поддерживается тип носителя (415). Также см. обновленный вопрос . –