ОБНОВЛЕНИЕ 1:
Проблема с вашим кодом.
durationText : "";
pitchfile: any;
Должно было быть:
durationText : string;
pitchfile: any;
ОБНОВЛЕНИЕ 2:
Если это был текстовый файл, который вы принимаете, и пользователь выбралфайл через файл типа input
, его содержимое можно прочитать следующим образом:
import { Component } from '@angular/core';
@Component({...})
export class AppComponent {
durationText;
setPitchfile($event) {...}
readFromTextFile($event) {
const file = $event.target.files[0];
var reader = new FileReader();
reader.onload = function () {
console.log(reader.result);
};
reader.readAsText(file);
}
...
}
Образец StackBlitz обновлен соответствующим образом.
ОРИГИНАЛЬНЫЙ ОТВЕТ:
Не совсем уверен, как вы сможете получить длительность из текстового файла.
Но если у вас есть настоящий аудиофайл, вы можете сделать что-то вроде этого:
Вы можете создать экземпляр new Audio()
, а затем установить его свойство src
, используя URL.createObjectURL($event.target.files[0]);
.После загрузки метаданных экземпляр Audio запускает событие loadedmetadata
, к которому можно прослушать присвоение функции onloadedmetadata
для экземпляра аудио.
Внутри этой функции обратного вызова вы можете проверить наличиеduration
property.
Попробуйте:
import { Component } from '@angular/core';
@Component({...})
export class AppComponent {
durationText = '';
setPitchfile($event) {
console.log($event.target.files);
const audio = new Audio();
audio.src = URL.createObjectURL($event.target.files[0]);
audio.onloadedmetadata = () => {
console.log(audio.duration);
this.durationText = audio.duration;
};
}
...
}
Вот Рабочий образец Stackblitz для вашей ссылки.