2014-02-28 125 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并将每个返回结果保存在一个普通数组中。 谢谢! :) –

相关问题