如何解决启动下载 onClick 在任何浏览器上都不起作用?
我正在尝试使用 Firefox 或任何浏览器启动下载 onclick,但似乎无法正常工作。我已经确认我的网络请求正在工作,因为它发布了 200,我可以在响应中看到数据。以下是我处理请求的方式:
await fetch (params)
.then(async (data) => {
data.blob();
})
.then((blob) => {
const url = window.URL.createObjectURL(new Blob(blob));
const link = document.createElement('a');
setSuccess('Success');
link.href = url;
link.setAttribute(
'download',modelName + formatName,);
document.body.appendChild(link);
link.click();
});
此外,这里是我的 React UI 组件代码,我的请求被调用:
React.useEffect(() => {
if (clicked === true) {
fetchData();
}
},[clicked]);
const handleExport = () => {
setClick(true);
};
return (
<Col id="exportColumn" className="col-lg-6 text-center">
<Suspense fallback={<div> Loading . . . </div>}>
<Button id="exportButton" onClick={handleExport} variant="dark">
Export
</Button>
</Suspense>
</Col>
);
知道为什么这在 Firefox 上不起作用吗?
解决方法
我看到的是,您正在链接 then 方法,但第一个没有返回任何内容。如果你想要你的第一个然后返回 data.blob(); 你需要删除括号或用括号替换它们。
像这样:
await fetch(params).then(async (data) => data.blob())...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。