Передайте содержимое файла функции вместо загрузки файла

Я использую Nightmare для автоматической загрузки созданного пользователем файла csv из веб-службы следующим образом. (грубый рабочий процесс):

  1. .goto() сайт
  2. .insert() учетные данные и .click() кнопка входа
  3. .wait() для загрузки желаемого элемента DOM
  4. очистить целевую страницу, чтобы извлечь определенный идентификатор запроса, который необходим для создания ссылки для загрузки интересующего меня файла.
  5. вызовите .goto() на конечной точке export.php с некоторыми другими аргументами для загрузки файла csv. Поскольку отображается электронное окно Nightmare, меня просят указать путь для сохранения файла.

В настоящее время общий общий рабочий процесс выглядит следующим образом:

  1. скачать (и сохранить) файл с помощью Nightmare
  2. прочитать файл с помощью readFileSync() в строку
  3. анализировать данные с помощью data-forge-js, pandasjs или d3-dsv

Передавая содержимое файла непосредственно в анализ данных, я хочу избавиться от сохранения файла на шаге 1 и чтения этого локального файла на шаге 2. Я не хочу хранить исходный файл csv локально. Поскольку я не хочу включать Nightmares Electron Window на более позднем этапе производства, я ищу подход для прямой передачи содержимого файла в функцию обработки данных и избавления от этих ненужных шагов.


person albert    schedule 11.12.2017    source источник


Ответы (1)


Вы можете использовать методы объекта window.URL для хранения ваших данных. Следующее извлекает двоичный двоичный объект, но вы можете использовать типы содержимого и типы ответов для возврата строк.

        xmlhttp.open('GET', PHOTO_URL, true);
        xmlhttp.responseType = 'blob';

        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    var blob = xmlhttp.response;
                    photoImg.src = window.URL.createObjectURL(blob);
                    setTimeout(setOnCampusImage,0);     
                } else {
                    photoImg.src = 'unknown.png';
                }
            }
        }
person McMurphy    schedule 11.12.2017
comment
Не могли бы вы уточнить свой код немного подробнее? Это похоже на фрагмент какого-то проекта. С информацией, представленной в вашем ответе, я не смог правильно адаптировать ее для своих нужд. - person albert; 12.12.2017
comment
Можете ли вы опубликовать свой код? Я не уверен на 100% в том, что вы пытаетесь сделать. - person McMurphy; 12.12.2017