0

我正在使用 HTML5 FileReader 和 File API 制作离线音乐播放器。这还包括一个基本的播放列表功能。

现在,当用户选择多个文件时,我将这些文件作为 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]);
    }
}
4

1 回答 1

1

您不能只将 ArrayBuffer 存储在数组中并从中重新读取文件。缓冲区用于加载固定长度的字节并保持它们来,这样您就不会用完字节来播放。

相反,您应该将 ArrayBuffer 中的所有字节读入一个 byteArray 并将 byteArrays 存储在一个数组中。然后,您可以重播字节数组中的所有歌曲。

如果您已经在本地拥有歌曲(因为您的问题没有说明您从哪里获取文件),您可以只存储文件的路径,然后从中重新加载文件。

我希望这是有道理的。

于 2014-02-28T18:13:34.650 回答