Chrome浏览器中生成的下载文件出现网络错误

时间:2018-10-09 13:48:42

标签: javascript google-chrome

在我的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 个答案:

答案 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);
};