【问题标题】:Network error on generated download in Chrome在 Chrome 中生成下载时出现网络错误
【发布时间】:2018-10-09 13:48:41
【问题描述】:

在我的网络应用程序中,我想提供消息日志的下载。这是通过以下 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 的一些错误(或功能)?

【问题讨论】:

    标签: javascript google-chrome


    【解决方案1】:

    有(略小于)2MB 的限制。见https://bugs.chromium.org/p/chromium/issues/detail?id=69227

    您可以使用 blob url 解决它。 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);
    };
    

    【讨论】:

    猜你喜欢
    • 2017-02-21
    • 2021-09-17
    • 2017-12-22
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2019-03-03
    • 1970-01-01
    相关资源
    最近更新 更多