我正在使用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]);
}
}
答案 0 :(得分:1)
您不能只将ArrayBuffer存储在数组中并从中重新读取该文件。缓冲区用于加载固定长度的字节并使它们保持不变,这样就不会耗尽字节数。
相反,您应该将ArrayBuffer中的所有字节读入byteArray并将byteArrays存储在数组中。然后,您可以重放字节数组中的所有歌曲。
如果你已经在本地拥有歌曲(因为你的问题没有说明你从哪里获得文件),你可以只存储文件的路径,然后从那里重新加载文件。
我希望这是有道理的。