elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Como File Uploader Asincrono ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como File Uploader Asincrono ?  (Leído 5,978 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Como File Uploader Asincrono ?
« en: 12 Agosto 2010, 22:53 pm »

Buenas.

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
  1. <script type="text/javascript">
  2. function resultadoUpload(estado, file)
  3. {
  4. if (estado == 0)
  5. var mensaje = file + ' <img src="loading.gif" border="0">';
  6. else if (estado == 1)
  7. var mensaje = file + ' <img src="palomita.png" border="0">';
  8. else if (estado == 2)
  9. var mensaje = 'Error: Tipo de archivo/extensión no permitido.';
  10. else if (estado == 3)
  11. var mensaje = 'Error: No se pudo copiar el archivo.';
  12. else
  13. var mensaje = 'Error Desconocido';
  14.  
  15. document.getElementById('upload').innerHTML=mensaje;
  16. }
  17.  
  18. function capa_verno( capa )
  19. {
  20. var layer;
  21. layer= document.getElementById(capa);
  22.  
  23. if( layer.style.visibility=="hidden" )
  24. {
  25. layer.style.visibility="visible"; //visible - hidden
  26. layer.style.display="block"; // none - block
  27. }
  28. else
  29. {
  30. layer.style.visibility="hidden"; //visible - hidden
  31. layer.style.display="none"; // none - bloque
  32. }
  33. }
  34. </script>
  35. <?php
  36. if( !strcmp($_GET["file"], "up") )
  37. {
  38. sleep(3);
  39. echo '<script language="javascript" type="text/javascript">
  40. window.top.window.resultadoUpload(\'1\', \''. $_FILES["archivo"]["name"]. '\');
  41. </script>';
  42. }
  43. else
  44. {
  45. echo 'Archivos:<p>
  46. <div id="upload"></div>
  47. <form action="?file=up" method="POST" id="form" enctype="multipart/form-data" target="ajax_upload"
  48. onsubmit="resultadoUpload(\'0\', \'Subiendo \')">
  49. <input type="file" name="archivo"><input type="submit" value="Subir" onclick="capa_verno(\'form\')">
  50. </form>
  51. <iframe name="ajax_upload" id="ajax_upload" style="border-style:none;"></iframe>';
  52. }
  53. ?>


« Última modificación: 12 Agosto 2010, 23:11 pm por Diabliyo » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Como File Uploader Asincrono ?
« Respuesta #1 en: 12 Agosto 2010, 23:09 pm »

Eso pasa por la directiva upload_max_filesize, que establece el tamaño máximo a subir... No entendí lo que quisiste decir anteriormente

Info
upload_max_filesize


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Como File Uploader Asincrono ?
« Respuesta #2 en: 12 Agosto 2010, 23:13 pm »

Eso pasa por la directiva upload_max_filesize, que establece el tamaño máximo a subir... No entendí lo que quisiste decir anteriormente

Info
upload_max_filesize

Sobre asincrono ?, me refiero a subir un archivo (estilo Gmail) en donde el usuario pueda subir un archivo sin procesar el formulario (dejar subiendo el archivo), asi puede escribir una entrada mientras tanto.

Sobre upload_mx_filesize existe forma de configurarla ilimitada ?, digo, porque igual si la pongo a limite de 700MB y alguien sube algo de 800MB ya el script tendria problemas :(

IMPORTANTE: edite el primer psot, checa la configuracion de mi apache please.

Saludos !
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Como File Uploader Asincrono ?
« Respuesta #3 en: 12 Agosto 2010, 23:41 pm »

incrementa el valor de la directiva de upload_max_filesize y post_max_size, puedes ponerle 2G a upload_max_filesize o mas, dependiendo de los archivos que creas que puedes intentar subir y post_max_size unos megas mas que upload_max_filesize por si deseas enviar mas datos desde el mismo POST...

En el mismo script, puedes usar la función set_time_limit() que establece el limite de tiempo que puede ejecutarse el script y si este se sobrepasa entra el tiempo establecido de la directiva max_execution_time...
Osea, si establece 100 el limite de ejecucion del script con la función set_time_limit() + 30 de la directiva max_execution_time serán 130. Puedes ponerle el tiempo que creas...

Creo que con el valor por defecto de la directiva max_input_time bastara, pero si son muchos datos que enviaras via POST puedes incrementarla.

El valor por defecto de la directiva memory_limit puedes dejarla asi, para evitar que el servidor se sobrecargue...

El valor por defecto de la directiva max_input_nesting_level, lo puedes dejar como esta.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Como File Uploader Asincrono ?
« Respuesta #4 en: 13 Agosto 2010, 00:13 am »

Por ultimo, que piensas del script para upload ?, crees que exista algo mejor pero que no use Flash ni Java ?

Porque la idea es basicamente subir los archivos a un directorio, al mismo tiempo registrar una variable de session donde esten los nombres, los nombres de los archivos a subir se cambiaran al momento de finalizar la subida por un nombre aleatorio, posteriormente cuando el usuario Procese/Enive el formulario, se revisara la variable de sesion registrada y al contener esta datos se asume que subieron archivos, se mueven y se genera un registro en la BDD.

Saludos !
« Última modificación: 13 Agosto 2010, 00:15 am por Diabliyo » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Como File Uploader Asincrono ?
« Respuesta #5 en: 13 Agosto 2010, 00:17 am »

Por ultimo, que piensas del script para upload ?, crees que exista algo mejor pero que no use Flash ni Java ?

Nose man, primero tocaría Ajax antes que flash xD y nose ajax... Esta duda la podrías mover a desarrollo web ya que el problema no seria con PHP...
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Como File Uploader Asincrono ?
« Respuesta #6 en: 13 Agosto 2010, 01:17 am »

Nose man, primero tocaría Ajax antes que flash xD y nose ajax... Esta duda la podrías mover a desarrollo web ya que el problema no seria con PHP...

Lo que pasa es que AJAX solo procesa flujos POST y GET, asi que el flujo $_FILE no se puede :(...
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Como File Uploader Asincrono ?
« Respuesta #7 en: 14 Agosto 2010, 01:51 am »

No tengo idea de como se hace en ajax para manejar archivos, pero si en caso se puede, lo puedes hacer por partes y enviarlos por post! :P (inventa algun sistemita de comandos entre aplicaciones)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con Sockets sincrono y asincrono .. « 1 2 »
.NET (C#, VB.NET, ASP)
llAudioslavell 12 18,392 Último mensaje 14 Enero 2013, 21:49 pm
por spiritdead
Aplicacion utilizando Socket Asincrono
.NET (C#, VB.NET, ASP)
llAudioslavell 2 4,349 Último mensaje 27 Agosto 2013, 09:22 am
por Keyen Night
Acceso asincrono a Variables
Desarrollo Web
AlbertoBSD 3 2,260 Último mensaje 26 Agosto 2016, 20:04 pm
por AlbertoBSD
Dudas como Uploader [Ayuda]
Dudas Generales
BabaNK 6 3,362 Último mensaje 22 Febrero 2017, 17:57 pm
por BabaNK
Junit asincrono
Java
alexis33de 0 2,232 Último mensaje 13 Noviembre 2017, 15:30 pm
por alexis33de
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines