Javascript FileReader работал с первой попытки, но не больше (ни одна строка кода не была изменена) - PullRequest
0 голосов
/ 23 мая 2018

Итак, я добавил элемент ввода html для загрузки текстовых файлов.Затем я хотел прочитать содержимое текста и сохранить его в массив строк.Для этого (я использую Angular 2) я импортировал пакет * для чтения файлов *1002*, чтобы использовать функцию readAsText .Теперь, когда я попробовал это в первый раз, это сработало!Он печатал в текст, который был прочитан из файла в консоль.

Затем я удалил функцию console.log (line) , и с тех пор я получаю следующую ошибку: "не могу прочитать как файл: {}" .Я попытался прочитать функцию console.log (line) , но постоянно получаю ту же ошибку.Я зарегистрировал файловую переменную до того, как она использовалась программой чтения файлов и получила информацию о файле.Я также пробовал разные файлы, а также очищал ввод (el.nativeElement.firstElementChild.value = null) , но все равно та же ошибка.

html:

<input hidden="true" type="file" id="fileUpload" (change)="SendSurveyDataToBackend()" [attr.multipleFiles]="multipleFiles ? true : null">

js:

SendSurveyDataToBackend(){
    let inputEl = this.el.nativeElement.firstElementChild; 
    document.getElementById('csvUpload').style.color = "white";
    if (inputEl.files.length == 0 || inputEl.files.length > 1) {
        document.getElementById('csvUpload').style.color = "red";
        return;  
    }

    let file = null;
    file = inputEl.files[0];
    let FileReader = require('filereader');
    const reader = new FileReader();

    let surveyDataSetsAsStrings:string[] = [];        
    let surveyDataSets:SurveyData[] = [];

    reader.onload = (event) => {
        const file = event.target.result;
        const allLines = file.split(/\r\n|\n/);
        // Reading line by line
        allLines.map((line) => {
            surveyDataSetsAsStrings.push(line.toString)
            console.log(line);
        });
    };

    reader.onerror = (evt) => {
        alert(evt.target.error.name);
    };

    reader.readAsText(file);    

    for(var i = 0; i < surveyDataSetsAsStrings.length; i++){
        surveyDataSets[i].Id = parseInt(surveyDataSetsAsStrings[i].substring(0,2));
        surveyDataSets[i].Date = new Date(surveyDataSetsAsStrings[i].substring(42,61));
        surveyDataSets[i].PlayerCode = (surveyDataSetsAsStrings[i].substring(63,73));            
    }
    this.el.nativeElement.firstElementChild.files = null; 
    this.el.nativeElement.firstElementChild.value = null; 

    this.dataService.updateSurveyParticipants(surveyDataSets).subscribe( response => {
        if(response == 'success') // Http OK
            window.location.reload();
        else
        document.getElementById('csvUpload').style.color = "red";
    });   
}

Есть идеи, что может быть причиной этого?

1 Ответ

0 голосов
/ 23 мая 2018

Оказывается, мне просто нужно было удалить следующую строку кода, и она сработала ...

let FileReader = require('filereader');

Мое плохое ... похоже, я изменил строку кода после того, как она заработала ....

...