2011-11-28 89 views
1

我需要使用Ajax獲取音頻文件並以字節數組的形式接收它。我的後端在PHP上。通過Ajax獲取音頻文件

目前我使用

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

這讓我返回音頻文件形式的字節數組。但是我怎樣才能以Javascript作爲字節數組來接收它。我把這個link轉交給SO

但是這似乎不是正確的方法。任何人都可以請建議一些?

+0

不知道你的「字節數組」的意思。做什麼的? JavaScript對數據做了什麼? –

+0

不確定你在這裏做什麼。沒有任何讀者會加載和流式傳輸音頻文件嗎?爲什麼將它原始加載到PHP中? – Fredy31

+0

其實我希望使用appendBytes函數使用actionscript播放音頻文件。我希望將這個由AJAX提取的字節數組提供給我的動作類。 P.S:我知道同樣的事情可以通過actionscript直接獲取音頻來完成..但是我的網站的設計迫使我使用JS來達到這個目的 –

回答

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的字符串。比在類型化數組上更快,正如我在應用程序中令人震驚地發現的那樣。

文本/平原並不重要,但charset是。

1

保存一個文件名爲:raw_audio.php

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

現在加載PHP來自你的ajax調用的文件。

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

嘗試使用「arraybuffer」響應類型:

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