1 回答
TA贡献1830条经验 获得超9个赞
最简单的方法是不使用fetch而是使用普通的链接元素:
<a href="/api/download" download="sample.json">Click to download</a>
在所有现代浏览器中,该download属性将导致浏览器将链接响应保存为文件。没有fetch要求。
但是,如果您绝对需要fetch操作,那么您基本上可以在 JS 本身中执行此操作:获取结果,然后创建一个<a>,将其href属性设置为文件 blob,并确保download设置该属性:
fetch(...)
.then(res => res.blob())
.then(blob => {
const blobURL = URL.createObjectURL(blob);
// create our <a> to force a download for the response
const dl = document.createElement(`a`);
dl.href = blobURL;
dl.download = `sample.json`;
// In order for the link to "trigger" we need to add it to the document.
// If we don't, dl.click() won't do anything. So add it, click it, then remove it.
dl.style.display = `none`;
document.body.appendChild(dl);
dl.click();
document.body.removeChild(dl);
});
添加回答
举报