Javascript Express、Node、Angular将音频文件发送到前端
我试图从Node/Express后端到有角度的前端提供音频文件 服务器端代码为: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"
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);}代码>我现在得到一个十六进制值向下的变量。但无法将其转换为可播放音频