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

时间:2016-02-22 09:08:03

标签: javascript angularjs node.js audio express

我正在尝试将音频文件从Node / Express后端提供给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。 从我的理解,我从快递回来一个文件流对象,但我找不到如何把它变成可播放的音频。

编辑:是因为express download()仅适用于非二进制数据吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

使用此文件传递文件: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');

答案 1 :(得分:0)

您没有阅读Audio文档。

  

mySound = new Audio([URLString]);

音频构造函数采用URL,而不是原始数据。您不需要事先下载音频文件:

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

服务器代码按原样运行。