Angular-чтение файла и анализ его содержимого

у меня есть контроль загрузки файлов, который содержит выбранный файл, как показано ниже,

<div class="Block">
  <label id="lbl">File </label>
  <input #fileInput type='file'/>
</div>

у меня есть кнопка "Отправить", как показано ниже

<button type="button" class="btn btn-primary" 
     (click)="uploadDocument()">Upload File</button>

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

Примечание: тип файла будут csv

2 ответов


можно использовать FileReader в javascript для достижения этого, как его

добавить событие изменения файла для хранения файла в объекте, как показано ниже,

<div class="Block">
  <label id="lbl">Code </label>
  <input type='file' (change)="fileChanged($event)">

</div>

функция должна установить файл в объект, который используется позже

file:any;
fileChanged(e) {
    this.file = e.target.files[0];
}

когда кнопка отправки нажата, вы можете использовать readAsText() метод FileReader в javascript, чтобы получить содержимое, как показано ниже,

uploadDocument(file) {
    let fileReader = new FileReader();
    fileReader.onload = (e) => {
      console.log(fileReader.result);
    }
    fileReader.readAsText(this.file);
}

Примечание: onload событие будет уволен после содержимое читается, поэтому ваша логика должна быть внутри .


вы вытаскиваете файл из ввода и используете API FileReader

readFile(file: File) {
    var reader = new FileReader();
    reader.onload = () => {
        console.log(reader.result);
    };
    reader.readAsText(file);
}