2014-02-28 123 views
0

我正在使用HTML5 FileReader和File API製作離線音樂播放器。 這還包括一個基本的播放列表功能。將類型ArrayBuffer的結果存儲在JavaScript中的數組中

現在,當用戶選擇多個文件時,我將這些文件作爲ArrayBuffer進行檢索。

問題是,我想將這些返回的文件存儲到普通數組中,以便稍後可以在播放列表中使用它們。

我該如何在Javascript中實現?

function load_files(){ 
    var files = document.getElementById('file').files; 
    var k = files.length; 
    for (var i = 0; i < k; i++) { 
     var reader = new FileReader(); 
     reader.onload = function(e) { 
      playlist[i] = this.result; 
     }; 
     reader.readAsArrayBuffer(this.files[i]); 
     alert(song_counter); 
     initSound(playlist[song_counter]); 
    } 
} 

回答

1

您不能只將一個ArrayBuffer存儲在一個數組中,然後重新讀取它中的文件。該緩衝區用於加載固定長度的字節並保持它們到來,以便不會耗盡字節。

相反,您應該將ArrayBuffer中的所有字節讀取到byteArray中,並將byteArrays存儲在數組中。然後,您可以重放字節數組中的所有歌曲。

如果你已經有本地歌曲(因爲你的問題沒有說明你從哪裏獲得文件),你可以將路徑存儲到文件中,然後重新加載文件。

我希望這是有道理的。

+0

我想出瞭如何使用正常的數組。 基本上,我使用readAsDataURL並將每個返回結果保存在一個普通數組中。 謝謝! :) –

相關問題