我需要使用Ajax获取音频文件,并以字节数组的形式接收它。我的后端是在PHP上。
目前我正在使用
<?php
echo file_get_contents("./mainFile.mp3");
?>
这让我以一个字节数组的形式返回音频文件。但是如何在Javascript中以字节数组的形式接收它。我在SO
上提到了link但这似乎不是正确的方法。任何人都可以建议的东西???
答案 0 :(得分:1)
保存名为:raw_audio.php的文件
<?php
echo file_get_contents("./mainFile.mp3");
?>
现在从你的ajax调用中加载那个php文件。
$.ajax({
url:'raw_audio.php',
success: function(data)
{
var raw=data;
}
});
答案 1 :(得分:0)
您需要overrideMimeType()
至"text/plain; charset=x-user-defined"
,如此:
$.ajax( {
url: "php.php",
beforeSend: function( xhr ){
xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
},
success: function( text ) {
var i, l = text.length, bytes = [];
for( i = 0; i < l; ++i ) {
bytes.push( text.charCodeAt(i) & 0xFF );
}
console.log( bytes.length );
}
});
请注意,这非常徒劳,javascript中的位操作在字符串+ charCodeAt上非常快。正如我在我的应用程序中发现的那样令人震惊地发现,比在类型化数组上更快。
text / plain并不重要,但charset是。
答案 2 :(得分:0)
尝试使用&#39; arraybuffer&#39;响应类型:
request = new XMLHttpRequest();
request.responseType = "arraybuffer";
// ...
答案 3 :(得分:-1)
您要做的是通过ajax在&#34;二进制文件中读取文件&#34;办法。我只是用谷歌搜索二进制ajax,这是第一个出现的结果......不确定它是否有用...... http://nagoon97.wordpress.com/2008/04/06/reading-binary-files-using-ajax/