如何阅读Web API中的内容定位



我在后台使用Asp.Net API(.Net 5(。我在前端使用blazor wasm。

我的控制器的一种方法是:

public FileContentResult GetExport()
{
var IndividualBl = new IndividualBl();
return ResultBlob(IndividualBl.GetExport(), "individual-export.xlsx");
}
protected FileContentResult ResultBlob(byte[] byteArray, string fileName)
{
return File(byteArray, "application/octet-stream", fileName);
}

当我使用Swagger时,我会下载标题中包含名称的文件。我的响应标头:

access-control-allow-origin: *
content-disposition: attachment; filename=individual-export.xlsx; filename*=UTF-8''individual-export.xlsx
content-length: 4218
content-type: application/octet-stream
date: Mon, 23 Nov 2020 14:39:34 GMT
server: Microsoft-IIS/10.0
status: 200
x-powered-by: ASP.NET

现在我尝试通过以下服务获取此文件:

public async Task<StreamFileModel> GetExport()
{
var url = $"{_httpClient.BaseAddress}{IndividualUrls.IndividualController}/{IndividualUrls.GetExport}";
var result = await _httpClient.GetAsync(url);
var header = result.Content.Headers.ContentDisposition;
var content = await result.Content.ReadAsByteArrayAsync();
return new StreamFileModel
{
File = content,
Name = header.FileName
};
}

我的内容还可以,但标题为空(=ContentDisposition为空(

这不是获得内容处置价值的好方法吗?

感谢

在API项目中,您需要使用Cors策略来允许在头中进行内容分发:

app.UseCors(x => x.WithExposedHeaders("content-disposition"));

最新更新