Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скачать файл (https://javascript.ru/forum/misc/71543-skachat-fajjl.html)

tai 27.11.2017 20:49

Скачать файл
 
Добрый день!

По запросу из базы получаю данные. Нужно эти данные оформить в файл и скачать. Для этого сделал метод с таким содержимым

var link = document.createElement('a'); // создаем пустой элемент
link.setAttribute('href','data:text/plain,' + csvStr);
link.setAttribute('download', 'file.csv');

document.body.appendChild(link); // для firefox
onload = link.click();


В csvStr содержится строка (данные из БД). Также может быть и данные в формате base64. И эти данные могут быть довольно большими (например, какой-нибудь PDF-файл, размером 20+ Мб).

Обычно сформированные файлы скачиваются. Но, видимо, когда размер этих файлов очень большой (тот же PDF-файл или данные на 80 000 строк в csv), то при скачивании возникает "Ошибка сети" (в google chrome).

Можно ли как-то решить эту проблему?

tai 27.11.2017 20:51

Такой способ формирования файла предполагает, что данные будут в оперативной памяти? значит ли это что чем больше ОЗУ, тем меньше шанс получить эту ошибку?

Или для браузеров есть какое-то ограничение в этом плане?

Aetae 27.11.2017 21:21

Цитата:

Сообщение от tai (Сообщение 471357)
Или для браузеров есть какое-то ограничение в этом плане?

Есть: максимальная длина uri.

Ты всё равно делаешь запрос на сервер в базу, отдавай сразу файл, как нормальный человек.

P.S. Если же очень хочется по-хипстериски заняться растяжением собственного ануса - используй Blob.

laimas 27.11.2017 22:04

Цитата:

Сообщение от tai
тот же PDF-файл

PDF не является text/plain, а это означает ... Правильно сказали, к чему это все, если сервер сам спокойно отдаст.


Часовой пояс GMT +3, время: 02:56.