通过Ajax获取音频文件

时间:2011-11-28 18:36:48

标签: php javascript ajax streaming

我需要使用Ajax获取音频文件,并以字节数组的形式接收它。我的后端是在PHP上。

目前我正在使用

<?php 
echo  file_get_contents("./mainFile.mp3");
?>

这让我以一个字节数组的形式返回音频文件。但是如何在Javascript中以字节数组的形式接收它。我在SO

上提到了link

但这似乎不是正确的方法。任何人都可以建议的东西???

4 个答案:

答案 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/