Как скачать / загрузить большой текстовый файл в клиентское приложение - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь загрузить файл .obj, который я генерирую на стороне клиента из двоичного массива вершин.Проблема в том, что существует слишком много вершин, чтобы поместиться в память окна браузера

exportOBJ() {
    var output = 'o object_export\n';
    var i, j, k, l, x, y, z;

    var vertices = this._vertices.array;

    for (i = 0; i < vertices.length; i += 3) {
        x = vertices[i];
        y = vertices[i + 1];
        z = vertices[i + 2];

        output += 'v ' + x + ' ' + y + ' ' + z + '\n';
    }

    //Other data...
}

// Метод сохранения

    function (data) {

        var blob = new Blob([data], { type: 'text/obj;charset=utf-8;' });
        if (navigator.msSaveBlob) { // IE 10+
            navigator.msSaveBlob(blob, filename);
        } else {
            var link = document.createElement("a");
            if (link.download !== undefined) { // feature detection
                // Browsers that support HTML5 download attribute
                var url = URL.createObjectURL(blob);
                link.setAttribute("href", url);
                link.setAttribute("download", 'export.obj');
                link.style.visibility = 'hidden';
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
            }
        }
    })

Так что это прекрасно работает с небольшими файлами вершин, но когда естьво многих вершинах, например 10M, окно браузера вылетает.Я изучал использование файловых потоков, но это не на стороне клиента, насколько я понимаю.То же самое касается https://github.com/jimmywarting/StreamSaver.js, и мне также требуется возможность загрузки.

1 Ответ

0 голосов
/ 12 февраля 2019

В проекте github, упомянутом в вашем вопросе, упоминалось, что он работает на стороне клиента, когда ваш сайт работает по протоколу https.Он использует стратегию «человек посередине» только тогда, когда ваш веб-сайт не https.

Так что, пока ваш веб-сайт имеет https, вы можете использовать работника службы для перехвата запросов на выборку URL и загрузкисодержание.

Кстати, упомянутый вами проект весьма полезен.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...