Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Enviar fichero txt, y devolver el resultado en misma página Responder al tema
Nuevo tema


Página 1 de 1  [ 5 mensajes ] 
 
Nota 2011-04-20 06:56 @330

Perlero Nuevo
Registrado: 2011-04-20 06:32 @314
Mensajes: 35
Enviar fichero txt, y devolver el resultado en misma página
¡Hola!

Quizás la pregunta es muy tonta y la solución aun más, pero no sé hacerlo xD Soy nuevo en esto.

El usuario tiene la posibilidad de introducir un fichero con un conjunto (grande) de argumentos (imposible de listarlos en el html).

Entonces, una vez realizado esto, me gustaría poder devolver el resultado al html donde me encuentro (algo parecido a lo que hace Ajax, que espera un resultado y luego se procesa y haces con el lo que quieras).

Pero el caso es que, claro, para hacer el upload tengo:

Syntax: [ Download ] [ Hide ]
Using html4strict Syntax Highlighting
  1. <form action="../cgi-bin/upload_archivo.pl" method="post" enctype="multipart/form-data" id="procesaFile" name="procesaFile">
  2. Fichero de argumentos:<input name="fileDes" type="file" size="40px"/>
  3. <input type="submit" value=" Enviar Archivo " onclick="this.disabled=true; this.form.submit()">
  4. </form>


¿Cómo hago para que el retorno de la ejecución del upload_archivo.pl sea un string y yo, a partir de éste, poder jugar en el formulario principal?

Gracias


Nota 2011-04-20 09:51 @452
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Enviar fichero txt, y devolver el resultado en misma página
Bienvenido a los foros de Perl en español, Vertik.

De forma normal, un CGI recibe una petición por parte del servidor web, lee los argumentos que el usuario y el servidor le mandan, a través de la entrada estándar, y entrega el resultado en la salida estándar. El servidor web enviará la salida hacia el navegador del usuario.

También, de forma normal, esa salida será una página html entera, por lo que el usuario recibe una página, como resultado de su petición.

Hay otras ocasiones en las que podemos usar un CGI para "rellenar" alguna sección de alguna página que se crea de forma dinámica. Esto se consigue con técnicas SSI del Apache, por ejemplo.

En tu caso, el usuario te envía la información por medio de un upload. Tal y como lo tienes hecho, el cgi debería responder con una página entera, con un resultado. El qué debe ser ese resultado, lo debes decidir tú. Bien puede ser un mensaje de aviso al usuario de que se va a procesar el fichero enviado, o, si es posible, el cgi comienza el procesamiento del fichero y le va enviando al usuario, línea a línea, un informe de cómo va el asunto (esto no funciona en todos los navegadores).

El sistema Ajax se basa en hacer pequeñas peticiones HTTP de forma asíncrona (si se desea), y con los resultados de esas peticiones se rellenan toda o una parte de la página (con la ayuda de JavaScript que recibe y coloca el contenido).

No entiendo lo que quieres decir con "jugar" con el formulario. ¿Modificarlo?

_________________
JF^D Perl programming


Nota 2011-04-21 06:13 @300

Perlero Nuevo
Registrado: 2011-04-20 06:32 @314
Mensajes: 35
Re: Enviar fichero txt, y devolver el resultado en misma página
¡Hola!

Correcto, me refería a eso, a modificar el formulario inicial.

Ya conseguí solucionarlo, os comento.

El submit del form ataca a un iframe (oculto). Éste contendrá la respuesta del cgi. A su vez también contendrá código JavaScript que realizará una llamada (a partir del resultado obtenido por el cgi, a otro JavaScript del contenedor del iframe. Esto se hace con parent.nombreFuncion(). Esta función atacará al contenedor principal y "simulará" el comportamiento de Ajax.


Nota 2011-04-21 06:26 @310
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Enviar fichero txt, y devolver el resultado en misma página
¿No hubiera sido mejor hacer un Ajax directamente? Con CGI::Ajax se pueden realizar controladores de forma sencilla.

De todas maneras, me he quedado con las ganas de ver el código ;)

_________________
JF^D Perl programming


Nota 2011-05-12 06:36 @317

Perlero Nuevo
Registrado: 2011-04-20 06:32 @314
Mensajes: 35
Re: Enviar fichero txt, y devolver el resultado en misma página
Hola,

No había visto de nuevo el post y al entrar de nuevo he visto que te gustaría ver el código :D

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. print "Content-type: text/HTML;charset=ISO-8859-1\n";
  2. print "<html>";
  3. print '<script>function crearFrases(){ parent.crearFrases(document.getElementById("resultado").value);}</script>';
  4. print '<body onLoad="crearFrases()">';
  5. print '<textarea  id=resultado onChange="crearFrases()">'.$mensaje;
  6. print "</textarea>";
  7. print "</body>";
  8. print "</html>";


crearFrases() llama a su vez a un crearFrases() del padre de este iframe. Y allí podré modificar el HTML inicial con el resultado deseado.

Soy nuevo en todo esto y seguro que hay mil maneras de hacerlo mejor, xD pero ésta me resulto fácil de hacerla :D

¡Gracias!


Responder al tema  [ 5 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO