Angular 5无法播放音频文件

时间:2018-10-26 23:41:55

标签: angular html5 html5-audio

我有一个Angular 5项目。它从数据库获取文件路径并播放它们。但是我的某些文件名类似于'[Teknik-Servis%3A905533837273] _05533837273-630_20181005104235(160133).wav',其中包括特殊字符,如:,[]%等。因此当我播放此文件时, 未捕获(承诺)的DOMException:由于找不到支持的源而无法加载。在控制台出现错误。 %3A是':'字符,因此当我调用url时,浏览器可能会尝试更改它,从而出现错误。但是播放此文件名时没有问题,例如“ [630 Selcuk] _630-140_20180919082432(76142).wav” 有什么方法可以播放文件名中带有特殊字符(%3A,%5B)的音频文件?

我的音频播放功能;

    playAudio(filepath) {

    let filename= filepath.replace(/^.*(\\|\/|\:)/, '');
    console.log(filepath);
   if (this.audio.src.replace(/^.*(\\|\/|\:)/, '') == filename) {
  // if(this.audio.src==filepath){
      if (this.audio.paused)
        this.audio.play();
      else
        this.audio.pause();
    }
    else {
      this.audio.pause();
      this.audio = new Audio();

      this.audio.src = filepath;
      this.audio.load();
      this.audio.play();
    }

  }

1 个答案:

答案 0 :(得分:1)

例如,您需要使用encodeURIComponent()对文件名进行编码。

this.audio.src = encodeURIComponent(filepath);