Hola a todos, estoy intentando crear un formulario en el cual se seleccionen varias imágenes y se muestre una barra de progreso que indique el estado de la subida. El problema que estoy teniendo es que consigo que las imágenes suban perfectamente al servidor, pero la barra de progreso muestra el progreso individual de cada imagen, no el total de todas. Dejo el código que uso para ver si alguien me puede guiar un poco.
El formulario en HTML
Código html:
Ver original<form id="upload_form" enctype="multipart/form-data" method="post"> <input type="file" name="upload[]" id="files" multiple><br> <input type="button" value="Upload File" onclick="subirArchivo()"> <progress id="progressBar" value="0" max="100" style="width: 300px";></progress>
El código Javascript
Código javascript
:
Ver originalfunction subirArchivo() {
var archivos = document.getElementById("files").files;
for(var i = 0; i< archivos.length; i++){
var file = archivos[i];
var formdata = new FormData();
formdata.append("upload", file);
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress", progreso, false);
ajax.addEventListener("load", operacion_completada, false);
ajax.addEventListener("error", mensaje_error, false);
ajax.addEventListener("abort", abortar_subida, false);
ajax.open("POST", "upload_multiple_mod.php");
ajax.send(formdata);
} //fin for
} //fin funcion subir archivo
function progreso(event){
document.getElementById("ltotal").innerHTML = "Subidos "+ event.loaded+" bytes de "+event.total;
var percent = (event.loaded / event.total) * 100;
document.getElementById("progressBar").value = Math.round(percent);
document.getElementById("estado").innerHTML =Math.round(percent)+"% subiendo... por favor, espere";
} //fin funcion progreso
function operacion_completada(event) {
document.getElementById("estado").innerHTML = event.target.responseText;
document.getElementById("progressBar").value = 0;
} //fin funcion operacion_completada
function mensaje_error(event) {
document.getElementById("estado").innerHTML = "Error al subir el archivo";
}//fin funcion mensaje_error
function abortar_subida(event) {
document.getElementById("estado").innerHTML = "Upload Abort";
} //fin funcion abortar_subida
El PHP en el servidor
Código php:
Ver originalfor($i=0; $i<count($_FILES['upload']['name']); $i++) {
$ruta_temporal = $_FILES['upload']['tmp_name'];
if ($ruta_temporal != ""){
$nueva_ruta = "uploads/" . $_FILES['upload']['name'];
echo $_FILES['upload']['name']."<br>";
}
}
}
Alguien me puede echar una mano?
Gracias a todos