WebApi服务端向Web客户端输出文件流

WebApi服务端使用HttpResponseMessage向Web客户端输出文件流

public HttpResponseMessage Export()
{
   //取数据
   var lstRes = OrderBLL.Export();

   //向Excel里面填充数据
   HSSFWorkbook workbook = new HSSFWorkbook();
   CreateAndFillSheet(workbook, lstRes);
   
   //保存到服务
   var fileName = "Excel" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
   var strPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Data\" + fileName);
   using (FileStream fs = new FileStream(strPath, FileMode.Create))
   {
       workbook.Write(fs);
       using (MemoryStream ms = new MemoryStream())
       {
           workbook.Write(ms);
       }
   }

   //输出到浏览器
   try
   {
       var stream = new FileStream(strPath, FileMode.Open);
       HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
       response.Content = new StreamContent(stream);
       response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
       response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
       {
           FileName = fileName
       };

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

将文件流保存在StreamContent对象里面,然后输出到浏览器。在浏览器端即可将Excel输出。

猜你喜欢

转载自blog.csdn.net/lbx_15887055073/article/details/82765059