2017-04-12 4 views
0

Ich brauche WebAPI-Methode, die Datei und einige zusätzliche Daten zurückgibt. Ich versuche, es zu tun:WebAPI - Rückgabedatei und zusätzliche Daten

 HttpResponseMessage result = Request.CreateResponse<OCRResult>(HttpStatusCode.OK, ocrResult); 
     var stream = new FileStream(@"D:\\_forTest.jpg", FileMode.Open); 
     result.Content = new StreamContent(stream); 
     result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
     result.Content.Headers.ContentDisposition.FileName = Path.GetFileName("_forTest.jpg"); 
     result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
     result.Content.Headers.ContentLength = stream.Length; 
     return result; 

aber ich sehe nur in zurückgegebene Ergebnis-Datei, keine zusätzlichen json Daten (natürlich ist Inhaltstyp nicht json). Wie man es "kombiniert"?

Antwort

2

Wenn Sie bei der Dokumentation der Request.CreateResponse<T> Methode aussehen: https://msdn.microsoft.com/en-us/library/hh969056(v=vs.118).aspx

Wert: Der Inhalt der HTTP-Antwortnachricht.

Also im Grunde legen Sie ocrResult als Inhalt Ihrer Nachricht, dann überschreiben direkt nach:

result.Content = new StreamContent(stream); 

In jedem Fall können Sie keine Datei und Anzeigeinhalt an der schicken gleichzeitig in einer HTTP-Antwort. Dies liegt daran, dass beide tatsächlich auf die gleiche Weise gesendet werden (und der Inhaltstyp teilt dem Browser mit, ob es sich um anzeigbaren Inhalt oder eine Datei handelt). Aus diesem Grund zeigen die meisten Websites eine Inhaltsseite mit automatischer Umleitung und die Meldung "Ihr Download wird in wenigen Sekunden gestartet".

Verwandte Themen