Ошибка сети при сгенерированной загрузке в Chrome - PullRequest
0 голосов
/ 09 октября 2018

в моем веб-приложении я хочу предоставить загрузку для журнала сообщений.Это делается с помощью следующей функции 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);
};

Функция выполняется щелчком мыши и в большинстве случаев работает нормально.

Однако, когда файл становится немного больше (> ~ 3 МБ), загрузка в Chrome завершается неудачно с сетевой ошибкой.

Такая же загрузка отлично работает в других браузерах, таких как Firefox.Режим инкогнито не решил проблему.

Могу ли я что-то изменить в своем коде, чтобы загрузка работала?Или это какая-то ошибка (или особенность) Chrome, которая мешает загрузке?

1 Ответ

0 голосов
/ 11 октября 2018

Существует ограничение (немного меньше) 2 МБ.См. https://bugs.chromium.org/p/chromium/issues/detail?id=69227

Вы можете обойти это, используя URL-адреса 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);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...