Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Вопрос Как победить javascript на download сформированного *.csv размером более 2-х мегабайт?

Тема в разделе "Прочее", создана пользователем pvvx, 18 апр 2019.

Статус темы:
Закрыта.
  1. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    Положил пример чтоб издалека смотреть :)
    Ограничения 2-х мегабайт так и не нашел.
     
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    Спасибо- погляжу...
    Это уже выяснили:
    var file = new Blob([uint8], {type: type}); - раздельное задание данных от href,
    и link.setAttribute('href', data); в которой в дата был описан тип и через запятую данные...
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    И размер их в Chrome, на компе, ограничен в 2Гегабайта вроде, на мобилке что-то менее (причина не понятна).
    Я просто нарвался на вопросы-подсказки по инету, где данные встраивали вместе с head-заголовком... При таком подходе и ограничение, которое даже вывели - 2МБ в Chrome и 1MB в FFox.... :)
    Такими примерами завален инет. По этому и спросил здесь, т.к. объект в javascript 2 Гега...
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
  5. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    В примерах download многие под копирку пишут передачу данных в href, а там сплошные ограничения по размеру и поведению разных эксплореров. Тот-же uri в HTTP заголовке у IE ограничен 2 килобайта, при этом он ещё лезет в сеть узнать размер MTU, т.к. по старой устаревшей схеме HTTP заголовок должен вмещаться в пакет TCP. Потом это расширили на размер стека TCP (window приемника запроса), потом вообще сняли… От этого и возникло разнообразие и на учебных сайтах c примерами в инет смотреть не стоит, чтобы не нарваться как я :)

    Это и есть ответ на мой-же вопрос. Но как поставить галку на данном сайте, что вопрос снят – не нашел :)
     
  7. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    Ну почему не стоит, если тема близка, то можно и порешать этот ребус.
    Если ничего не делать, деградируешь нафик.
    А так по упражнялся и как мог, результаты опубликовал.

    П. С.
    Из опыта экспорта данных в книгу excel, на фф и хроме, запущенных на ПК, проблем не возникало, сервер указывает тип контента - книга ексцель, они её сохраняют сначала и зовут excel, чтоб открыл. А вот с ie засада, он пытается открыть её и не может пока она не скачалась. Объяснять пользователю, типа выполните сначала "Сохранить как" а после открывайте, бесполезно, всё равно забывают. Поэтому на сервере отгружаю книгу, завернутую в зип.
     
  8. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.127
    Симпатии:
    226
    наверху. Опции темы и снять галку Открыто ;)
     
  9. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    А нет такой:
    скрин (раскрыть)

    upload_2019-4-22_22-51-40.png
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    У меня проект свыше головы - расслабляться некогда. Один подымаю в данном устройстве всё с дров для ядра Linux по пользовательский HTML, включая ещё контролируемое им оборудование. Вливаю в него накопленные знания за четверть века в данном деле... :) Основу уже сделал и откатал. Теперь надо красоту наводить...
    А я нашел, как задать EF,BB,BF - надо в стринг ввести "заголовок спецификации" \ufeff -> Adding UTF-8 BOM to string/Blob
    И Exel, и Apache OpenOffice, и ... съедают utf-8.
     
  11. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    В таком виде хоть китайский:
    HTML:
    1.  
    2. <!doctype html>
    3. <html lang="ru">
    4. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    5. </head>
    6.     <h4>Пример сохранения utf-8 csv файла на javascript.</h4>
    7.     <span>Тут какой-то заголовок:<br/><input id="header" type="text" size="90" value="第1栏;第2栏;第3栏;第4栏;第5栏;第6栏;第7栏;第8栏;第9栏;第10栏"></span>
    8.     <br/><input value="Сохранить" type="button" onclick="save_file()" />
    9. </body>
    10. <script type="text/javascript">
    11.  
    12.     function download(data, filename, type) {
    13.         var file = new Blob([data], {type: type});
    14.         if (window.navigator.msSaveOrOpenBlob) { // ie10+
    15.             window.navigator.msSaveOrOpenBlob(file, filename);
    16.         } else { // ff, chrome
    17.             var url = URL.createObjectURL(file);
    18.             var a = document.createElement("a");
    19.             a.href = url;
    20.             a.download = filename;
    21.             document.body.appendChild(a);
    22.             a.click();
    23.             setTimeout(function() {document.body.removeChild(a); window.URL.revokeObjectURL(url); }, 0);
    24.         }
    25.     }
    26.  
    27.     function save_file() {
    28.         var data = '\ufeff' + header.value;
    29.         if (data.length > 0) {
    30.             data += '\r\n';
    31.         }
    32.         for (var i = 1; data.length < 6000000; i++) {
    33.            data += '第' + i + ';1,23;4,56;7,89;0;0;0;0;0;0' + '\r\n';
    34.        }
    35.        download(data, 'test.csv', 'text/csv');
    36.    }
    37.  
    38. </html>
    upload_2019-4-23_3-7-48.png
     
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    И ещё не хватает URL.revokeObjectURL(url); и blob.Close(); для освобождения ресурсов после сохранения...
     
  13. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.127
    Симпатии:
    226
    Странно. Закрою по вашей просьбе.
     
Статус темы:
Закрыта.

Поделиться этой страницей