如何解决 '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")
在我的 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")