Постоянно читать локальный файл с JS? - PullRequest
0 голосов
/ 13 декабря 2018

Я искал повсюду, но не могу найти решение для повторного чтения локального текстового файла (в той же папке, что и мои файлы js и html), который работает с Chrome.

Мне нужно постоянно читать файл обновлений, который другая программа обновляет автоматически, я не знаю как.Это обычный файл text.txt.

Я прочитал много вопросов / ответов по этому поводу, но пока ничего не нашел.Кто-нибудь может помочь?

edit: Я имел в виду и без узла, просто ванильный JS.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы можете включить XmlHttpRequest для локальных файлов, запустив Chrome с отключенными функциями безопасности .Это не идеальное решение, но это единственный способ автоматически делать то, что вы хотите, без запуска какого-либо сервера.Использование Node для отслеживания изменений в файле и перетаскивание данных через WebSocket в браузер будет правильным способом справиться с этим.

В качестве альтернативы вы можете использовать API FileReader, чтобы открыть этот локальный файл, но вам нужно выбратьсначала вручную через элемент <input type="file">.

function readInputFile(event) {
  let file = event.target.files[0];

  if (!file) {
    return;
  }
  
  let reader = new FileReader();
  
  reader.addEventListener('load', event => {
    let content = event.target.result;
    alert(content);
  });
  
  reader.readAsText(file);
}

document.getElementById('datafile').addEventListener('change', readInputFile, false);
<input type="file" id="datafile">
0 голосов
/ 13 декабря 2018

Я думаю, вы можете быть смущены, что такое локальный файл в этом контексте.

Локальный файл будет загружен с URL-адресом, таким как file://, или выбран из файла, введенного в форму.

Файл рядом с вашими .html и .css не является локальным файлом, это размещенный файл на вашем веб-сервере, который вы используете для размещения .html.Вы будете ссылаться на него с относительным путем к вашему домену, например, '/file.css'

Узел будет иметь больше опций, видя, что он может читать и получать доступ к локальным файлам синхронно со сборкой в ​​fs (файловая система) библиотека.

Что вам нужно сделать, так это обработать ваш файл, как и любой другой в Интернете, и загрузить его таким же образом.Затем загрузите его снова позже, когда вам нужно будет проверить наличие обновлений.повторить.

...