Express,Node,Angular将audio文件发送到前端

我正在尝试从Node / Express后端将audio文件提供给Angular前端。

服务器端代码是:

var file = "/filepath.wav"; res.download(file, 'testAudio.wav'); 

客户端代码:

 var testData = null; this.getBasicAudio = function(){ console.log("Requesting File"); $http.get('/getBasicAudio', "FilePathRequest") //Success, return the file .success(function(data){ console.log("File retrive Successful"); testData = data; return true; }) //Error, file not retrived .error(function(data){ console.log("File retrive Failed"); return false; }); }; 

这将返回文件一切正常。

我试图加载到一个audio对象,就像我把文件引用。

 var audio = new Audio(testData); 

但该对象为null。 从我明白我回来从快递文件stream对象,但我找不到如何将其转换为可播放的audio。

编辑:这是因为快速下载()只适用于非二进制数据?

谢谢!

有一个文件正在使用这个: https : //github.com/obastemur/mediaserver

代码如下所示:

服务器:

 http.createServer(function(req,res){ ms.pipe(req,res,"../../Node/TWLW/audio/examples/testAudio.mp3"); }).listen(1337, '127.0.0.1'); 

客户:

 var audio = new Audio('http://127.0.0.1:1337/'); audio.play(); 

在Express中,文件不会在响应中返回。 反而可以通过url访问:

服务器

 app.get('/music.mp3',function(req,res){ ms.pipe(req, res, '../../Node/TWLW/audio/examples/testAudio.mp3'); }); 

客户

 var audio = new Audio('http://127.0.0.1:8080/testAudio.mp3'); 

您没有阅读audio文件。

mySound = new Audio([URLString]);

audio构造函数需要一个URL,而不是原始数据。 您不需要预先下载audio文件:

 var audio = new Audio('/getBasicAudio'); audio.play(); // your audio file should play 

服务器代码按原样运行。