我需要使用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來達到這個目的 –