我需要使用Ajax获取音频文件并以字节数组的形式接收它。我的后端在PHP上。通过Ajax获取音频文件
目前我使用
<?php
echo file_get_contents("./mainFile.mp3");
?>
这让我返回音频文件形式的字节数组。但是我怎样才能以Javascript作为字节数组来接收它。我把这个link转交给SO
但是这似乎不是正确的方法。任何人都可以请建议一些?
我需要使用Ajax获取音频文件并以字节数组的形式接收它。我的后端在PHP上。通过Ajax获取音频文件
目前我使用
<?php
echo file_get_contents("./mainFile.mp3");
?>
这让我返回音频文件形式的字节数组。但是我怎样才能以Javascript作为字节数组来接收它。我把这个link转交给SO
但是这似乎不是正确的方法。任何人都可以请建议一些?
您需要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的字符串。比在类型化数组上更快,正如我在应用程序中令人震惊地发现的那样。
文本/平原并不重要,但charset是。
你要做的是通过ajax以“二进制”方式读取文件。我只是用Google搜索二进制阿贾克斯,这是来到了第一个结果......不知道这是否是有用的...... http://nagoon97.wordpress.com/2008/04/06/reading-binary-files-using-ajax/
@nameless downvoter ...任何理由?或只是一个屁股? –
保存一个文件名为:raw_audio.php
<?php
echo file_get_contents("./mainFile.mp3");
?>
现在加载PHP来自你的ajax调用的文件。
$.ajax({
url:'raw_audio.php',
success: function(data)
{
var raw=data;
}
});
尝试使用“arraybuffer”响应类型:
request = new XMLHttpRequest();
request.responseType = "arraybuffer";
// ...
不知道你的“字节数组”的意思。做什么的? JavaScript对数据做了什么? –
不确定你在这里做什么。没有任何读者会加载和流式传输音频文件吗?为什么将它原始加载到PHP中? – Fredy31
其实我希望使用appendBytes函数使用actionscript播放音频文件。我希望将这个由AJAX提取的字节数组提供给我的动作类。 P.S:我知道同样的事情可以通过actionscript直接获取音频来完成..但是我的网站的设计迫使我使用JS来达到这个目的 –