我需要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)。如何&#34;结合&#34;它?
答案 0 :(得分:2)
如果您查看Request.CreateResponse<T>
方法的文档:https://msdn.microsoft.com/en-us/library/hh969056(v=vs.118).aspx
value:HTTP响应消息的内容。
所以基本上,你把ocrResult
作为邮件的内容,然后立即覆盖它:
result.Content = new StreamContent(stream);
在任何情况下,您都无法在HTTP响应中同时发送文件和显示内容。这是因为两者实际上都以相同的方式发送(并且内容类型告诉浏览器它是可显示的内容还是文件)。这就是大多数网站显示带有自动重定向的内容页面的原因,以及“您的下载将在几秒钟后开始”的消息。