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

Javascript Express、Node、Angular将音频文件发送到前端,javascript,angularjs,node.js,audio,express,Javascript,Angularjs,Node.js,Audio,Express,我试图从Node/Express后端到有角度的前端提供音频文件 服务器端代码为: var file = "/filepath.wav"; res.download(file, 'testAudio.wav'); 客户端代码: var testData = null; this.getBasicAudio = function(){ console.log("Requesting File"); $http.get('/getBasicAudio', "FilePathRequest"

我试图从Node/Express后端到有角度的前端提供音频文件

服务器端代码为:

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;
  });
};
这将返回文件all ok

我试着把它加载到一个音频对象中,就好像我在输入文件引用一样

var audio = new Audio(testData);
但是对象是空的。 据我所知,我正在从express中获取一个filestream对象,但我找不到如何将其转换为可播放的音频

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


谢谢

获取了一个正在使用以下命令传递的文件:

代码如下所示:

服务器:

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');
您没有阅读文档

mySound=新音频([URLString])

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

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

服务器代码按原样工作。

我猜您应该将
var audio=new audio(testData)
成功
回调之外?如果是,这就是问题所在,
testData
只是这个回调中的一个文件。因此我从回调中填充testData,但稍后再访问它(文件加载发生在页面加载上),当我访问它时,我会得到一些输出。当我将其更改为文本文件时,我可以访问文本,就像音频文件一样,我不能使用它。也许,碰巧,在您尝试访问文本文件之前,您的文本文件的下载已经完成?你能尝试使用与音频文件大小相同的文本文件吗?当我将mp3转换为十六进制值时,它可以很好地下载(就像十六进制一样)。当它还是一个音频文件的时候,它就把它记下来了,这就是问题所在。当它下载时,会出现一堆或错误字符。更改服务端代码
fs.readFile(文件'hex',函数(err,data){if(err){console.log(“err”);}//console.log(data);ms.pipe(req,res,data);}我现在得到一个十六进制值向下的变量。但无法将其转换为可播放音频