作者:我是yingh_303 | 来源:互联网 | 2022-12-02 17:34
在我的Web应用程序中,我想提供消息日志的下载。这是通过以下Javascript函数完成的:
let download = (content, filename) => {
let uriCOntent= "data:application/octet-stream;charset=utf-8;base64," + btoa(content);
let link = document.createElement('a');
link.setAttribute('href', uriContent);
link.setAttribute('download', filename);
let event = new MouseEvent('click');
link.dispatchEvent(event);
};
通过单击鼠标即可执行该功能,并且在大多数情况下可以正常工作。
但是,当文件变大(>〜3MB)时,下载会在Chrome中失败,并出现网络错误。
相同的下载在Firefox等其他浏览器中也可以正常工作。无痕模式无法解决问题。
我可以更改代码中的某些内容以使下载正常吗?还是Chrome的某些错误(或功能)阻止了下载?
1> 小智..:
限制为(略小于)2MB。参见https://bugs.chromium.org/p/chromium/issues/detail?id=69227
您可以使用Blob网址解决此问题。
https://developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL
let download = (content, filename) => {
let uriCOntent= URL.createObjectURL(new Blob([content], {type : 'text/plain'}));
let link = document.createElement('a');
link.setAttribute('href', uriContent);
link.setAttribute('download', filename);
let event = new MouseEvent('click');
link.dispatchEvent(event);
};