由于CORS和第三方服务器的身份验证,我无法直接从angularJS加载音频文件,必须从PHP后端进行。这是我的PHP服务器代码,用于提供从第三方服务器下载的音频文件:
header('Pragma: public'); // required
header('Content-Type: audio/mpeg');
header('Content-length: ' . filesize($file));
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: filename="' . basename($file));
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
$len = readfile($file);
exit();
这是我的angularJS客户端代码:
var blob = new Blob([response], { type: 'audio/mpeg' });
var url = window.URL.createObjectURL(blob);
var audio = new Audio(url);
audio.play();
然而,它失败并显示异常消息:
DOMException: Failed to load because no supported source was found.
感谢任何建议和见解。
答案 0 :(得分:1)
由于您只是创建了一个带有响应的音频对象,因此您没有理由不必做您正在做的事情。
不要下载整个响应,从中创建Blob以及对象网址,而只需使用您首先请求的网址。您不仅可以获得流媒体数据的高效处理,还可以在下载运行时播放,和您不会需要CORS ...&# 34;不透明"反应很好。