Actualmente en mi CMS la forma de hacer uploading a archivos es simplemente moviendolos despues de haber procesado el formulario (pulsando ENVIAR), pero, lo que ahora quiero es brindar la posibilidad de hacer el proceso de forma paralale (asincrono).
La primer idea fue utilizar AJAX como medio, pero evidentemente esto no es posible ya que los flujos GET y POST son solo para pasar variables, y en este caso el flujo $_FILE no entra ( o si, si entra diganmelo xD).
La segunda idea (y la que medio funciona) es utilizar un <form> el cual procese a este dentro de un <iframe>, y con un poco de javascript hacer parecer que esta en AJAX, vaya, cuando el usuario proporciona el archivo a subir y pulsa Subir, el Formulario sigue estático pero en la parte donde esta el <input type="file se esta procesando la subida, al finalizar la subida simplemente se cambia el mensaje a algo como: Subido con éxito....
Mi script no presenta problemas para archivos de menos de 5MB, pero, si intento subir un archivo de 10, 15, 20 o mas MBs, simplemente no se sube ....
Tengo en menta la razon de que el script se frene o simplemente NO se suba el archivo, es porque la configuración del Apache asigna un tiempo de ejecución limite de un script PHP, y pues este simplemente excede el tiempo de ejecución y por ende, se frena el script. Si fuese asi, como me recomiendan configure mi Apache ?
La idea es que quiero contemplar archivos hasta de 700MB.
Me gustaría por favor me ayudaran o brindaran su opinión, a continuación les pongo el code:
configuracion de mi php.ini
Código:
post_max_size 8M 8M
max_execution_time 30 30
max_file_uploads 20 20
max_input_nesting_level 64 64
max_input_time 60 60
memory_limit 128M 128M
Código
<script type="text/javascript"> function resultadoUpload(estado, file) { if (estado == 0) var mensaje = file + ' <img src="loading.gif" border="0">'; else if (estado == 1) var mensaje = file + ' <img src="palomita.png" border="0">'; else if (estado == 2) var mensaje = 'Error: Tipo de archivo/extensión no permitido.'; else if (estado == 3) var mensaje = 'Error: No se pudo copiar el archivo.'; else var mensaje = 'Error Desconocido'; document.getElementById('upload').innerHTML=mensaje; } function capa_verno( capa ) { var layer; layer= document.getElementById(capa); if( layer.style.visibility=="hidden" ) { layer.style.visibility="visible"; //visible - hidden layer.style.display="block"; // none - block } else { layer.style.visibility="hidden"; //visible - hidden layer.style.display="none"; // none - bloque } } </script> <?php { echo '<script language="javascript" type="text/javascript"> window.top.window.resultadoUpload(\'1\', \''. $_FILES["archivo"]["name"]. '\'); </script>'; } else { echo 'Archivos:<p> <div id="upload"></div> <form action="?file=up" method="POST" id="form" enctype="multipart/form-data" target="ajax_upload" onsubmit="resultadoUpload(\'0\', \'Subiendo \')"> <input type="file" name="archivo"><input type="submit" value="Subir" onclick="capa_verno(\'form\')"> </form> <iframe name="ajax_upload" id="ajax_upload" style="border-style:none;"></iframe>'; } ?>