使用FileReader读取多个文件并获取filedatas的数组

时间:2016-09-14 13:50:20

标签: javascript functional-programming filereader

所以我有文件的FileList,我需要将它们全部读到一个数组即。 [fileData1, fileData2],以便我可以向我的后端发出所有文件的请求。我坚持所有的异步操作,我不知道如何等待事情完成。我需要一种方法来检测何时可以向后端发出请求。我也希望以一种功能性的编程方式来实现这一点。对不起,如果问题不清楚。

files.map((file) => {
        const fr = new FileReader();

        fr.readAsDataURL(file)

        fr.addEventListener('load', (event) => {
            // This is what I need to get to an array
            const fileData = event.target.value.substr(fr.result.indexOf(',') + 1);

        })
    })
//Here I need to make a single post request with all the files in it

1 个答案:

答案 0 :(得分:1)

既然你添加了functional-programming标签,那么老式的递归函数怎么样:

function read_files(cur_file) {
    if (cur_file < files.length) {
        // read the next file
        const fr = new FileReader();
        fr.readAsDataURL(files[cur_file]);
        fr.addEventListener('load', (event) => {
            // extract the file data from event here
            read_files(cur_file+1);
        }
    }
    else {
        // we've read all the files
        // send the request
    }
}

read_files(0);