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
服务器代码按原样运行。