2017-04-12 57 views
0

我需要WebAPI方法,它返回文件和一些額外的數據。我嘗試這樣做:WebAPI - 返回文件和其他數據

 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; 

,但我只看到返回的結果文件,而不是額外的JSON數據(當然,內容類型不是JSON)。如何「結合」呢?

回答

2

如果你看一下Request.CreateResponse<T>方法的文檔:https://msdn.microsoft.com/en-us/library/hh969056(v=vs.118).aspx

值:HTTP響應消息的內容

因此,基本上,你把ocrResult爲您的郵件內容,然後覆蓋它的權利後:

result.Content = new StreamContent(stream); 

在任何情況下,你不能顯示內容在發送文件同時在HTTP響應中。這是因爲兩者實際上都以相同的方式發送(並且內容類型告訴瀏覽器它是可顯示內容還是文件)。這就是爲什麼大多數網站會顯示帶有自動重定向的內容頁面,並且「您的下載將在幾秒鐘後開始」。