• Publicidad

Enviar fichero txt, y devolver el resultado en misma página

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Enviar fichero txt, y devolver el resultado en misma página

Notapor Vertik » 2011-04-20 06:56 @330

¡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:

Sintáxis: [ Descargar ] [ Ocultar ]
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>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¿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
Vertik
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2011-04-20 06:32 @314

Publicidad

Re: Enviar fichero txt, y devolver el resultado en misma página

Notapor explorer » 2011-04-20 09:51 @452

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Enviar fichero txt, y devolver el resultado en misma página

Notapor Vertik » 2011-04-21 06:13 @300

¡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.
Vertik
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2011-04-20 06:32 @314

Re: Enviar fichero txt, y devolver el resultado en misma página

Notapor explorer » 2011-04-21 06:26 @310

¿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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Enviar fichero txt, y devolver el resultado en misma página

Notapor Vertik » 2011-05-12 06:36 @317

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

Sintáxis: [ Descargar ] [ Ocultar ]
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>";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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!
Vertik
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2011-04-20 06:32 @314


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados