WEB API 用MemoryStream流做下载功能

刚开始把MemoryStream 放在

var streamResult = new MemoryStream();
HttpResponseMessage response = new HttpResponseMessage();
response.Content = new StreamContent(streamResult);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = filename;
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

  return response;

发现下载的文件不能正常打开,后在网上查了原因是因为没有把Stram流没有真正转换成功。

但又不想用FilStream 流,因为这个还要把MemoryStream保存为文件才行,后面找到有一个ByteArrayContent的类,然后把文件转换为byte数组就行了。

try
{

var streamResult = new MemoryStream();
HttpResponseMessage response = new HttpResponseMessage();
response.Content = new ByteArrayContent(streamResult.ToArray());
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = filename;
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

return response;
}
catch
{
return new HttpResponseMessage(HttpStatusCode.NoContent);
}

原文地址:https://www.cnblogs.com/zhian/p/6232047.html