C# WebAPI-返回文件和附加数据
我需要WebAPI方法,它返回文件和一些附加数据。我试着去做:C# WebAPI-返回文件和附加数据,c#,json,asp.net-web-api,C#,Json,Asp.net Web Api,我需要WebAPI方法,它返回文件和一些附加数据。我试着去做: HttpResponseMessage result = Request.CreateResponse<OCRResult>(HttpStatusCode.OK, ocrResult); var stream = new FileStream(@"D:\\_forTest.jpg", FileMode.Open); result.Content = new StreamCo
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;
httpresponsemessageresult=Request.CreateResponse(HttpStatusCode.OK,ocresult);
var stream=newfilestream(@“D:\\\ u forTest.jpg”,FileMode.Open);
结果.内容=新的流内容(流);
result.Content.Headers.ContentDisposition=新的ContentDispositionHeaderValue(“附件”);
result.Content.Headers.ContentDisposition.FileName=Path.GetFileName(“_forTest.jpg”);
result.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/八位字节流”);
result.Content.Headers.ContentLength=stream.Length;
返回结果;
但我在返回的结果中只看到了文件,而没有看到额外的json数据(当然,内容类型不是json)。如何“组合”它?如果您查看
请求的文档。CreateResponse
方法:
值:HTTP响应消息的内容
因此,基本上,您可以将ocresult
作为消息的内容,然后立即覆盖它:
result.Content = new StreamContent(stream);
在任何情况下,您都不能在HTTP响应中同时发送文件和显示内容。这是因为两者实际上以相同的方式发送(并且内容类型告诉浏览器它是可显示的内容还是文件)。这就是为什么大多数网站会显示带有自动重定向的内容页,并显示消息“您的下载将在几秒钟后开始”。如果您查看
请求的文档。CreateResponse
方法:
值:HTTP响应消息的内容
因此,基本上,您可以将ocresult
作为消息的内容,然后立即覆盖它:
result.Content = new StreamContent(stream);
在任何情况下,您都不能在HTTP响应中同时发送文件和显示内容。这是因为两者实际上以相同的方式发送(并且内容类型告诉浏览器它是可显示的内容还是文件)。这就是为什么大多数网站会显示一个自动重定向的内容页面,并显示“您的下载将在几秒钟后开始”的消息