通过Ajax获取音频文件

Fetching audio file via Ajax

本文关键字:文件 音频 获取 Ajax 通过      更新时间:2023-09-26

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

当前我正在使用

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

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

上引用了这个链接

但这似乎不是正确的方法。谁能给点建议??

保存一个名为:raw_audio.php的文件

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

现在从ajax调用加载php文件。

$.ajax({
url:'raw_audio.php',
success: function(data)
{
 var raw=data;
}
});

您需要像这样将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并不重要,重要的是字符集

尝试使用'arraybuffer'响应类型:

request = new XMLHttpRequest();
request.responseType = "arraybuffer";
// ...

您要做的是通过ajax以"二进制"方式读取文件。我刚刚在谷歌上搜索了二进制ajax,这是出现的第一个结果…不确定它是否有用……http://nagoon97.wordpress.com/2008/04/06/reading-binary-files-using-ajax/