我正在从服务器下载一个文件。在那里,我设置了一个文件名,我希望在前端读取它。以下是我在服务器上的操作方式:
基本上我会返回不同类型的文件,有时是CSV格式,有时是XLSX格式,有时是PDF格式。因此,我想在前端获取文件名,这样我就可以将其保存为应该的格式,例如
以下是我的前端代码:
但我不知道它是否在我的响应中可用,以及如何在前端部分读取它,以便我可以替换。
string fileName = "SomeText" + DateTime.UtcNow.ToString() + ".csv";
return File(stream, "text/csv", fileName);
基本上我会返回不同类型的文件,有时是CSV格式,有时是XLSX格式,有时是PDF格式。因此,我想在前端获取文件名,这样我就可以将其保存为应该的格式,例如
SomeText.pdf
,它将自动保存在本地机器上的PDF格式中。以下是我的前端代码:
getFileFromServer(params).then(response => {
console.log('server response download:', response);
const type = response.headers['content-type'];
const blob = new Blob([response.data], { type: type, encoding: 'UTF-8' });
//const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'file.xlsx'; // Here I want to get rid of hardcoded value instead I want filename from server
link.click();
link.remove(); // Probably needed to remove html element after downloading?
});
我在网络选项卡下的响应头部分看到了一个Content-Disposition
,其中包含了该信息:
Content-Disposition: attachment; filename="SomeText22/08/2019 10:42:04.csv";
但我不知道它是否在我的响应中可用,以及如何在前端部分读取它,以便我可以替换。
link.download = 'file.xlsx';
通过服务器的路径 ..
非常感谢大家
祝好
response.headers
中。下面的两个答案对我都没有用。 - Muaz