在我的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的某些漏洞(或功能)阻止了下载?
答案 0 :(得分:2)
没有2MB的限制。参见https://bugs.chromium.org/p/chromium/issues/detail?id=69227
您可以使用Blob网址解决此问题。 https://developer.mozilla.org/en-US/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);
};