我在我的 asp.net 核心 api Controller 中有
return new FileStreamResult(excel, "application/ms-excel")
{
FileDownloadName = filename
};
我正在做一个ajax请求来获取这个文件
var response = axios.get(
`/endpoint`, {
responseType: 'blob'
});
然后我正在使用一个名为 download 的库它需要 3 个参数,其中一个是“文件名”,我想知道是否可以以某种方式获取来自服务器的文件名。
download(response.data,"test.xlsx", content);
科尔斯
services.AddCors(options => options.AddPolicy("Cors",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
最佳答案
首先你需要暴露Content-Disposition
您的 CORS 配置中的 header ,因为它不包含在 CORS-safelisted response headers 中
services.AddCors(options => options.AddPolicy("Cors",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.WithExposedHeaders("Content-Disposition");
}));
然后你应该能够解析响应
Content-Disposition
header 并从中获取文件名axios.get(
"/endpoint", {
responseType: 'blob'
})
.then(response => {
var contentDisposition = response.headers["content-disposition"];
var match = contentDisposition.match(/filename\s*=\s*"(.+)"/i);
var filename = match[1];
console.log(filename);
});
关于javascript - 使用 Ajax/Axios 时从 FileStreamResult 获取文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59274629/