2016-11-02 5 views
0

Ich arbeite mit einem iOS-Typ. Er möchte Bilder über WebAPI ASP.NET hochladen. Ich muss anrufen, um diese Bilder zu empfangen.
Er sagte, dass er AFNetworking verwendet, um Daten über AFMultipartFormData zu senden. Meine Frage ist, wie kann ich das an meinem Ende erhalten? Soll ich die Daten im JSON-Format aufnehmen? Oder welche Maßnahmen müssen zu diesem Zweck ergriffen werden? Ich möchte den ganzen Prozess wissen, da dies das erste Mal ist, dass ich mit MultipartFormData arbeite.

UPDATE
auf die Antwort Basierend benutzte ich diese:So empfangen Sie MultipartFormData auf 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); 
     } 

Aber der iOS Kerl bekam:

Anforderung fehlgeschlagen: nicht unterstützten Medientyp (415)

+0

Schreiben Sie einen empfangenden Web-API-Controller ?, oder rufen Sie ihre bestehenden Web API Endpoint? – uk2k05

+0

Es ist so ... Zuerst werden die Bilder hochgeladen ... nachdem alle hochgeladen wurden, kommt der Rest des JSON-Objekts von der IOS-App. –

+0

Sie können sowohl Bild- als auch JSON-Daten in derselben HTTP-Anfrage senden. –

Antwort

1

Innerhalb der Web-API Controller Sie können auf die Bilddatei mit dem folgenden Code zugreifen: -

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

Wenn Sie mehr als eine Datei gebucht haben, ersetzen Dateien [0] mit entsprechender Zählung 1 oder 2 usw.

Und dann können Sie die JSON-Zugriff auf den Code verwendet:

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]); 

Wenn Sie mehr als ein json strings geschrieben, ersetzen jsonformat [0] mit entsprechenden count 1 oder 2 etc.

+0

Bro danke für deine Antwort. Aber ich habe eine Frage, da ich auf einer sehr einfachen Ebene von WebAPI bin. Löschen Sie mich, wenn ich falsch liege ... Das ist, was ich dem Typ von iOS sagen werde "Dies ist die URL: URL_OF_THIS_CALL ist eine POST-Anfrage und Sie können JSON in Ihre Parameter setzen und diese' AFMultiPartFormData' senden antwort wird das alles für mich tun Ich weiß nicht, ob das Sinn macht, aber korrigiere mich, wenn ich falsch liege –

+0

Du wirst dem iOS-Entwickler die Spezifikation geben, dass deine API Anfragen mit Content-Type akzeptiert: multipart/form-data und um das Bild als mehrteilige Form Daten Payload zu senden. Dann sollten sie erreichen können, was in der Antwort erwähnt wird. –

+0

er bekommt Anfrage fehlgeschlagen: nicht unterstützter Medientyp (415). Siehe auch die aktualisierte Frage –

Verwandte Themen