Recorriendo archivos para FileReader, la salida siempre contiene el último valor del bucle
Estoy usando la API FileReader para leer archivos en local.
<input type="file" id="filesx" name="filesx[]" onchange="readmultifiles(this.files)" multiple="" />
<script>
function readmultifiles(files) {
var ret = "";
var ul = document.querySelector("#bag>ul");
while (ul.hasChildNodes()) {
ul.removeChild(ul.firstChild);
}
for (var i = 0; i < files.length; i++) //for multiple files
{
var f = files[i];
var name = files[i].name;
alert(name);
var reader = new FileReader();
reader.onload = function(e) {
// get file content
var text = e.target.result;
var li = document.createElement("li");
li.innerHTML = name + "____" + text;
ul.appendChild(li);
}
reader.readAsText(f,"UTF-8");
}
}
</script>
Si la entrada incluye 2 archivos:
file1 ---- "content1"
file2 ---- "content2"
Obtengo esta salida:
file2__content1
file2__content2
Cómo arreglar el código para mostrar:
file1__content1
file2__content2