Angular: FileReader - получить имя из файла из списка - PullRequest
0 голосов
/ 25 сентября 2019

Я использовал этот FileReader для чтения csvs:

readDocument(fileChangeEvent: Event) {
  return new Observable<any>(obs => {
      const file = (fileChangeEvent.target as HTMLInputElement).files[0];
      if (file) {
        const fileReader = new FileReader();
        fileReader.onload = e => {
          obs.next({
            name: file.name,
            result: fileReader.result
          });
        };
        fileReader.readAsText(file);
      } 
    });

С этим я мог затем использовать файл в моей подписке и использовать его имя или значение в любое время:

this.readDocument(csv).subscribe(value => {
            console.log(value.name);
            console.log(value.result
}

Тем временемУ меня есть этот Filereader для чтения папки, в которой хранятся csvs:

  public readFolder(files: string[]) {
    this.fileCache = [];
    this.readFile(0, files);
    return this.folderReader$.asObservable();
  }

  private readFile(index, files) {
    const reader = new FileReader();
    if (index >= files.length) {
      this.folderReader$.next(this.fileCache);
      return;
    }
    const file = files[index];
    const filename = file.name;
    console.log(filename);
    reader.onload = (e: any) => {
      this.fileCache.push(e.target.result);

      this.readFile(index + 1, files);
    };
    reader.readAsBinaryString(file);
  }

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

files = []
this.folderReader.readFolder(csv.target.files).subscribe(files => {
      files.forEach((value, key) => {
            console.log(key + ': ' + value);
     }
}

Моя проблема в том, что id хотел бы снова иметь возможность прочитать значение и имя файла, как впервый пример.В итоге это должно выглядеть примерно так:

this.folderReader.readFolder(csv.target.files).subscribe(files => {
      files.forEach((file) => {
            console.log(file.name)
            console.log(file.result)

     }
}

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

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