gpt4 book ai didi

javascript - 使用 Ajax/Axios 时从 FileStreamResult 获取文件名?

转载 作者:行者123 更新时间:2023-12-04 02:41:10 28 4
gpt4 key购买 nike

我在我的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com