如何解决 'content-disposition' header 在浏览器中显示 null

how to solve 'content-disposition' header show null in browser

在我的 angular 应用程序中,我使用了来自网络 API 核心的 excel 文件 return。我还在API方法中的content-dispositionheader中设置了一个文件名。但是我无法从 API 得到 content-disposition header。如何解决这个问题。

Api方法代码为:

    [HttpGet("ExportToExcelAsync")]
    public async Task<IActionResult> ExportToExcelAsync(int id, int rId)
    {  

            var Details = await _Service.GetDetails(id, rId);                
            var excelFile = exportToExcel.ExportExcel(Details , 
            templatePath).Result;               
            var content = excelFile.ToArray();
            var actualFile = Details.DocumentName;
            Response.Headers.Add("x-file-name","" + actualFile + ".xlsx");
            Response.Headers.Add("Content-Disposition", "" + actualFile + ".xlsx");
                          
            return File(
           content,
           "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
           "" + actualFile + ".xlsx");          
    } 

在我的angular边码中:

exportToExcel(){

this.Service.ExportToExcel(Id,rId).subscribe((response) => {
var contentDisposition=response.headers.get('content-disposition');
this.file= contentDisposition.split(';')[1].trim().split('=')[1]; 
this.downloadFile(response,this.file);

}); }

您可以在 ASP.NET 核心 WebAPI 后端应用程序中启用 CORS 时尝试 specify the headers which need to be exposed to the client,如下所示。

.WithExposedHeaders("x-file-name", "Content-Disposition")