我有一个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();
}
}
答案 0 :(得分:1)
例如,您需要使用encodeURIComponent()
对文件名进行编码。
this.audio.src = encodeURIComponent(filepath);