Tengo un problema con un código de mi página.
Al subir archivos de gran tamaño, me muestra el mensaje de "Las páginas no responden".
He intentado poner un GIF para que lo muestre mientras se ejecuta el script pero se queda congelado.
Adelanto que soy un poco inútil para esto (por eso recurro a ustedes)
![lloron](http://static.forosdelweb.com/fdwtheme/images/smilies/chillando.png)
![lloron](http://static.forosdelweb.com/fdwtheme/images/smilies/chillando.png)
El código consta de dos partes:
Primera, formulario html y Javascript:
Código HTML:
<html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="../_lib/lib/js/uniqid.js"></script> <script> $(document).on("click", "#fichero", function(event) { EsperaOn(); }); $(document).on("change", "#fichero", function(event) { ficheros = event.target.files; fichero = ficheros[0]; var total_archivo = fichero.size; var start = 0; var totalPaquete = 8000000; // 8 MB var end = totalPaquete; idunico = uniqid(); i = 0; while (start < total_archivo) { i++; corte = fichero.slice(start, end); nombreCorte = idunico+"_"+i; subirFichero(corte,nombreCorte,fichero.name); start = end; end = start + totalPaquete; } EsperaOff(); }); function EsperaOn() { $("#Espera").css('visibility','visible'); } function EsperaOff() { $("#Espera").css('visibility','hidden'); } function subirFichero(trozo,nombreTrozo,nombreFicheroOriginal) { EsperaOn(); xhr = new XMLHttpRequest(); formulario = new FormData(); formulario.append("trozo", trozo); formulario.append("nombretrozo",nombreTrozo); formulario.append("nombreficherooriginal",nombreFicheroOriginal); xhr.open("POST", "../bk_subir_archivo_receptor/index.php", false); xhr.send(formulario); } </script> </head> <body> <div> <form action="../bk_subir_archivo_insertabla/index.php"> <strong style="font-size: 20px;">Asunto: </strong><br><input type="text" id="asunto" name="asunto" /><br><br> <strong style="font-size: 20px;">Notas: </strong><br><textarea cols="50" rows="7" id="notas" name="notas" style="font-size:14px; font-type:arial"></textarea><br><br><br> <input type="file" id="fichero" onclick="enviar()" /><br><br><br> <div style="margin-left: 30%"> <input type="submit" value="Ok" /> </div> </form> <div id="Espera" style="visibility: hidden; position: absolute; top: 25%; left: 50%; width=300px; height=150px; margin-top:-75px; margin-left:-150px;"> <img src="../_lib/img/cargando.gif"> </div> </div> </body> </html>
Al ejecutarse este código se queda congelada la pantalla hasta que termina:
Código PHP:
$_SESSION['nombreFicheroOriginal'] =$_POST['nombreficherooriginal'];
$nombretrozo = ltrim($_POST["nombretrozo"]);
$nombreTemporal = $_FILES["trozo"]["tmp_name"];
move_uploaded_file($nombreTemporal,$_SESSION['scriptcase']['login']['glo_nm_path_doc']."/".$nombretrozo);
reajunta($_SESSION['guerola_id']."_".$_SESSION['nombreFicheroOriginal'], $nombretrozo);
function reajunta($nombreDefinitivo,$nombretrozo) {
list($idunico,$numeroTrozo) = explode("_",$nombretrozo); //el nombre del trozo está compuesto por el ID el NúmeroDeTrozo
$archivoFinal = fopen($_SESSION['scriptcase']['login']['glo_nm_path_doc']."/".$nombreDefinitivo, "ab");
$trozo = fopen($_SESSION['scriptcase']['login']['glo_nm_path_doc']."/".$idunico."_" . $numeroTrozo, "rb"); //abro el trozo
while ($buff = fread($trozo, 10000000)) {
fwrite($archivoFinal, $buff);
}
unlink($nombretrozo); //borro el trozo porque ya está agregado y no me servirá
fclose($archivoFinal);
}
De verdad seria de gran ayuda que me dijeran si estoy haciendo algo mal (o muy mal) o si tiene una solución viable.
Muchas gracias anticipadamente!!!
Saludos
Andrés