Функция загрузки FileReader не запускается - PullRequest
0 голосов
/ 24 июня 2019

Чтобы подвести итог моей проблемы, мне нужно прочитать CSV-файл с Android-устройства.В настоящее время я использую FileReader из JavaScript.Мой код был написан месяц назад, и он работал, но когда я вернулся, чтобы проверить функциональность, я увидел, что моя функция onload даже не срабатывает.

В журнале консоли я мог видеть, что у моего объекта есть функция, загруженная в onload, файл читается и его содержимое тоже.Ниже я приложу некоторые фрагменты из моего кода.

readCSVFile(input: HTMLInputElement) {

    var content = this.csvContent;
    const files = input.files;
    console.log("files: ", files);

    if (files && files.length) {

      const fileToRead = files[0];
      console.log("step1");
      var fileReader = new FileReader();

      console.log("state 1: ", fileReader.readyState); //prints undefined, but should have been "0"

      fileReader.onload = this.onFileLoad.bind(this);
      console.log("fileReader: ", fileReader);
      fileReader.readAsText(fileToRead, "UTF-8");
      console.log("fileReader 2: ", fileReader.onload);
      console.log("state 3: ", fileReader.readyState);
   }
}

Я не думаю, что файл 'onFileLoad' является релевантным, но его первая строка - console.log("something"), и я не могу увидеть это вмоя консольВот несколько выводов с консоли:

fileReader 2:  ƒ (fileLoadedEvent) {
        console.log("step2");
        var textFromFileLoaded = fileLoadedEvent.target.result;
        this.csvContent = textFromFileLoaded;
        console.log("Continut: ", t…

state 1:  undefined

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Учитывая вывод FileReader.toString(), являющийся согласно вашему комментарию

"function () {
this._readyState = 0;
this._error = null;
this._result = null;
this._progress = null;
this._localURL = '';
this._realReader = origFileReader? новый origFileReader (): {}; // eslint-disable-line new-cap
} "

Это означает, что вы имеете дело не с FileReader веб-API, а с каким-то объектом-оболочкой.

Поскольку он переопределяет исходное пространство имен без исходного поведения, на вашей позиции я бы просто избавился от всего, что устанавливает эту обертку. Если вы действительно хотите сохранить это crap , похоже, что его свойство ._realReader будет истинным FileReader, с которым вы могли бы нормально взаимодействовать.

0 голосов
/ 24 июня 2019

Вы можете попробовать без закрытия. то есть: fileReader.onload = function (ev) {// здесь идет ваш код} .bind (this);

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