3 回答
TA贡献1900条经验 获得超5个赞
这是一种特殊类型的标头,因此要在前端获取此标头,后端人员应该允许从他的一端。然后你可以在响应中的标题
response.headers.get("content-disposition")
我在我的项目中使用了以下代码
downloadReport(url, data) {
fetch("url of api")
.then(async response => {
const filename = response.headers
.get("content-disposition")
.split('"')[1];
const text = await response.text();
return { filename, text };
})
.then(responseText => this.download(responseText))
.catch(error => {
messageNotification("error", error.message);
throw new Error(error.message);
});
}
TA贡献1843条经验 获得超7个赞
要从客户端(前端)的 Content-Disposition 获取文件名,您必须从服务器端(后端)授予权限。Spring用户可以使用
@CrossOrigin(value = {"*"}, exposedHeaders = {"Content-Disposition"})
@Controller
@RequestMapping("some endpoint")
在他们的控制器类中。
然后从前端我们可以使用获取文件名。
const filename = response.headers['content-disposition'].split('filename=')[1];
希望这可以帮助。上述解决方案对我来说效果很好
TA贡献1844条经验 获得超8个赞
您可以通过这种方式filename从header 获取Content-Disposition
getFileFromServer(params).then(response => {
// your old code
const [, filename] = response.headers['content-disposition'].split('filename=');
const link = document.createElement('a');
link.download = filename;
// your old code
});
希望这会有所帮助
- 3 回答
- 0 关注
- 142 浏览
添加回答
举报