如何返回一个IHttpActionResult与Http状态码200,并在Http响应中传递内存流
本文关键字:Http 响应 并在 内存 状态 何返回 返回 一个 IHttpActionResult | 更新日期: 2023-09-27 18:13:03
在我的APIController.cs Get()方法,我怎么能返回一个IHttpActionResult与HTTP状态码200和在HTTP响应的内存流传递?
I tried doing this:
var sr = new StreamReader(myMemoryStream);
string myStr = sr.ReadToEnd();
return Ok(myStr);
但是它将我的内存流转换为字符串并将其传递给Ok()。但是我不想在发送http响应之前将我的内存流转换为流。我在OkResult对象中没有看到任何允许我设置响应流的方法。
如何设置http响应正文?
public HttpResponseMessage GetFile()
{
byte[] byteArray;
using (MemoryStream memoryStream = new MemoryStream())
{
// Do you processign here
byteArray = memoryStream.ToArray();
}
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new ByteArrayContent(byteArray);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
//suppose its .xlsx file
response.Content.Headers.ContentDisposition.FileName = "Sample.xlsx";
return response;
}
如果你返回IHttpActionResult,那么返回
return ResponseMessage(GetFile());
请让我知道,如果你想客户端代码也
试试这个代码
public IHttpActionResult GetStream()
{
MemoryStream myMemoryStream = new MemoryStream();
var sr = new System.IO.StreamReader(myMemoryStream);
string myStr = sr.ReadToEnd();
return Ok(myStr);
}