в js, почему моя программа чтения файлов не может отследить мой входной файл, когда я его редактировал - PullRequest
1 голос
/ 25 марта 2020

Может быть, наивный вопрос, но мне интересно вот что:

У меня есть html вход, позволяющий мне найти локальный файл на моем компьютере. <input type="file" id="importFile">

Из этого ввода я создаю FileReader в js для отображения содержимого текстового файла на моей странице

var search_file = document.getElementById("search_file")
search_file.addEventListener('change', function(){
var reader = new FileReader();
var tmp = [];
reader.readAsText(file_to_survey);
reader.onload = function(e) {
   var contents = e.target.result;
   //function to edit html thanks to content//
}, false);

Эта часть на самом деле работает хорошо, НО, если я редактирую или заменив файл, на который я нацелился (с точно таким же именем), я не смогу отобразить файл без повторного поиска с указанным выше вводом html.

Есть ли способ отследить мой файл даже после издания?

Большое спасибо за вашу помощь. Я много копал, чтобы решить свою проблему, но, возможно, я думаю не так. Любая подсказка была бы хороша.

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

Вы можете поместить обработчик изменений ввода файла в отдельную функцию и вызывать эту функцию при необходимости.

function loadFile () {
  var reader = new FileReader();
  reader.addEventListener('load', function () {
    file = reader.result;
    // Handle the changes here
    console.log(file);
  });
  reader.readAsText(fileField.files[0]);
}

const fileField = document.getElementById('load'),
  reloadBut = document.getElementById('reload');
let file;

reloadBut.addEventListener('click', loadFile);
fileField.addEventListener('change', loadFile);
<input type="file" id="load">
<button id="reload">Load</button>

Отдельная кнопка используется для перезагрузки файла в этом фрагменте, но вы можете вызвать loadFile там, где вам нужно, напр. через некоторое время или из какого-либо обработчика событий, зная, что файл был изменен и т. д. c.

Примечание : работает только в Chrome, другие браузеры, похоже, теряют ссылку на файл просматривается в файл ввода, когда файл изменяется. Кроме того, файл должен быть правильно закрыт после сохранения перед перезагрузкой.

0 голосов
/ 25 марта 2020

Поскольку именно так работает элемент input type=file, и, насколько мне известно, вы не можете заставить браузер автоматически перечитывать файл с жесткого диска пользователя без его согласия express.

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