Os explico mi problemilla, tengo una función javascript que realiza un upload de varios archivos a la vez. Cuando se inicia la función realizo un for para recorrer todos los archivos a subir y los subo uno a uno, cuando se ha completado la subida de cada uno de ellos llamo a una función que me va mostrando el progreso de la subida (del tipo 1 de 6 imágenes), os pongo el código:
Código Javascript:
Ver original
function uploadMultipleFiles(up) { var input = up; var fd = new FormData(); var files = document.getElementById(input).files.length; for(i=1; i < files; i++){ fd.append(input, document.getElementById(input).files[i-1]); var xhr = new XMLHttpRequest(); $('.subiendo').next().after('<div class="uploaderBoxMulti"><div class="uploader"></div><span class="uploadTxt"></span></div>'); $('.uploaderBoxMulti').fadeIn('slow'); $('.subiendo').removeClass('subiendo'); //alert(i); xhr.addEventListener("load", function(event){uploadComplete(input, "multi", i, files, event)}, false); xhr.addEventListener("error", uploadFailed, false); xhr.addEventListener("abort", uploadCanceled, false); xhr.open("POST", "RUTA AL ALMACENAMIENTO DE LA IMAGEN"); xhr.send(fd); } }
Funciona bastante bien, pero el problema es que al llamar a la función uploadComplete() la variable i (el contador del for) me envía simpre el valor máximo (files), sin embargo si pongo un alert para que me muestre la variable i, funciona correctamente (va llamando a la función uploadComplete() con los diferentes valores).
¿Alguna sugerencia?
Gracias y saludos