c# - 如何在 Web API 的响应中附加文件

标签 c# asp.net-core aurelia closedxml

我需要在 ASP.NET Core 的 webAPI 中生成一个 Excel 文件,其中包含从 aurelia 网络应用程序接收的数据。流程是这样的: 在前端我提出请求

Print(printData: PrintData) {
return this.http
  .fetch(`planning/Print`, {
    method: "post",
    body: json(printData)
  })
  .then(response => response.json())
  .catch(error => {
    console.log(error);
  });

在 Web API Controller 中,我使用 ClosedXML 库获取数据并生成 Excel 文件

[HttpPost]
[Route("Print")]
public async Task<IActionResult> Print([FromBody] PrintDataVM data)
{      

  var getResponse = await mediator.Send(new PrintPlanning(data));

  return Ok(getResponse);

public async Task<XLWorkbook> PrintPlanning(PrintDataVM data)
  {
    using (XLWorkbook workBook=new XLWorkbook())
    {
      var workSheet= workBook.Worksheets.Add("Horas");

       workSheet.Cell("A1").Value = "Hola";

      return workBook;    
    }

在我的 Controller 中 getResponse 是这样的 getResponse

getResponse

我开始疑惑了,因为我不知道我应该得到这个对象还是内存流。我不知道如何让前端得到这个,以便一旦收到我就可以在那里处理它。 现在这显然给我错误

有什么想法吗?

问候

error fetch

最佳答案

将文件保存到流中并返回文件

var getResponse = await mediator.Send(new PrintPlanning(data));

var ms = new MemoryStream();
getResponse.SaveAs(ms);
ms.Position = 0;
return File(ms, "application/octet-stream", "filename");

或使用 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 而不是 application/octet-stream

关于c# - 如何在 Web API 的响应中附加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58611002/

相关文章:

c# - 在 ASP.NET Core 中设置策略时,JWT 身份验证返回 401

aurelia - 了解子元素何时加载

c# - 使用 linq 按字母顺序对 TreeView 进行排序

c# - 仅当图像较新时如何从 HTTP 下载图像?

c# - 对象的模型绑定(bind)集合作为 ASP.Net Core MVC 中模型的一个属性

c# - ASP NET Core Identity 中的 ai_user 和 ai_session cookie 是什么以及如何配置它?

javascript - Aurelia 绑定(bind)在 repeat.for 不工作

flexbox - Aurelia 自定义元素在 Flex-Container 内不起作用

c# - C# 中的可空字符串

c# - 如何在 ASP.NET MVC 5 中注册自定义主体类型?