【问题标题】:Store result of type ArrayBuffer in an array in Javascript将 ArrayBuffer 类型的结果存储在 Javascript 中的数组中
【发布时间】:2014-04-01 21:18:27
【问题描述】:

我正在使用 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]);
    }
}

【问题讨论】:

    标签: javascript arrays html arraybuffer


    【解决方案1】:

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

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

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

    我希望这是有道理的。

    【讨论】:

    • 我想出了如何使用普通数组来制作它。基本上,我使用 readAsDataURL 并将每个返回结果保存在一个普通数组中。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2017-07-13
    • 2021-09-24
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多