Итак, я добавил элемент ввода 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";
});
}
Есть идеи, что может быть причиной этого?