Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Upload de ficheros y parámetros GET

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> CGI
Mensaje Mar Sep 26, 2006 9:41 am
dailosmm
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Sep 2006
Mensajes: 4
Upload de ficheros y parámetros GET Responder citando

Hola a todos:

Estoy desarrollando un proyecto con macromedia Flash, y estoy haciendo con perl un script para subir ficheros mediante el método Filereference.upload() de actionscript.

Mi problema es que si quiero enviar algún parámetro además del fichero que quiero subir, tiene que ser adjuntándolo a la url, por tanto usando el método GET.

He estado buscando y no he encontrado solución para esta cuestión.

Otra duda que tengo es si habría posibilidad de averiguar el tipo MIME del fichero que estoy subiendo al servidor.

Muchas gracias de antemano y saludos a todos.
Mensaje Mar Sep 26, 2006 10:21 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
Responder citando

No entiendo por qué debes de usar GET. Podrías usar POST. Lo importante es que se use el enctype='multipart/form-data'. ¿Es que el ActionScript tiene esa limitación?

Te recomiendo una lectura del módulo CGI. Busca por 'Upload'. También, si buscas por 'mixing post' verás que se puede enviar formularios POST junto con parámetros en el URL.

En cuanto al MIME, hay varios módulos en Perl para deducirlo, pero casi todos lo que hacen es consultar la base de datos del programa 'file' que está en Linux/Unix.
Mensaje Mar Sep 26, 2006 10:38 am
dailosmm
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Sep 2006
Mensajes: 4
limitaciones de flash Responder citando

Hola:

Muchas gracias por la rapidez de respuesta. Por desgracia, el método upload de la clase Filereference de flash, no permite envío de parámetros por el método post. Sólo puedes adjuntar a la url los parámetros. Te copio aquí un pequeño extracto de la documentación de este método:

Parameters

url:String - The URL of the server script configured to handle upload through HTTP POST calls. The URL can be HTTP or, for secure uploads, HTTPS.

You can send data to the server with the upload() call by appending parameters to the URL; for example, http://www.myserver.com/upload.cgi?userID=jdoe

On some browsers, URL strings are limited in length. Lengths greater than 256 characters may fail on some browsers or servers.



Por otro lado, me podrían guiar sobre qué módulos podría usar para localizar el tipo MIME, o donde podría localizar información sobre este tema. He visto que existe el módulo MIME, pero en todos los casos usado para el envio de correos, por lo que no se si me podría servir para el fin que yo busco.

Muchas gracias nuevamente por tu respuesta.
Mensaje Mar Sep 26, 2006 10:57 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
Responder citando

Según este enlace:
http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002225.html

el envío de ficheros se hace, naturalmente, por medio de un POST. Lo que comenta de pasarle parámetros aparte es añadirles a la URL, como comentas, pero eso no es hacer un GET. Sigue siendo un POST pero la URL es 'más larga' de lo normal.

Bueno, pues la solución está donde te he dicho: abre la documentación del módulo CGI y busca por 'mixing post' y podrás acceder a ambos. Si tienes algún problema con las pruebas, dínoslo.

Curioso lo que ponen los comentarios a continuación. No dejes de leerles...

Ultima edición por explorer el Mar Sep 26, 2006 11:05 am, editado 1 vez
Mensaje Mar Sep 26, 2006 11:02 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
Responder citando

Hola:

Si usas el Flash 8 puedes hacer upload de archivos usando la clase FileReference, aquí un tutorial con el código fuente:
http://www.flash-db.com/Tutorials/upload/

Ahora, después lo puedes integrar con Perl y aquí hay un tutorial que te muestra como subir archivos usando Perl:
http://perlenespanol.baboonsoftware.com/tutoriales/cgi/upload_de_archivos.html

Lógicamente que en vez del formulario en HTML sería con tu Flash.

Ahora para encontrar el MIME de los archivos como te decía explorer hay varios módulos, yo el que uso es es MIME::Types.


Saludos
Mensaje Mar Sep 26, 2006 11:03 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
Responder citando

Sobre el tema del MIME, aquí tienes un enlace al módulo File::MimeInfo
Mensaje Jue Sep 28, 2006 5:31 am
dailosmm
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Sep 2006
Mensajes: 4
Contenido del fichero en variable Responder citando

Hola:

Muchas gracias por vuestras respuestas. Me han aclarado muchas dudas, pero todavia tengo algunas. Estoy intentando que el contenido binario del fichero que quiero subir, se almacene en una variable para luego guardarlo en la base de datos MySQL. Mi duda es como convertir directamente los datos del contenido a una variable. En mi codigo, lo he intentado de esta manera pero me da problemas, no se si estoy haciendo bien:

Código:
#!/usr/bin/perl

 use CGI;

 my $query = new CGI;
 
 my $key = $query->url_param("key");
 my $file = $query->param("Filedata");
 my $filedata = $query->upload("Filedata");

 my $content;
 #Transferimos byte por byte el archivo
 while (my $bytesread = read($filedata, my $buffer, 1024)) {
   $content .= $buffer;
 }


gracias por vuestra atención,
Mensaje Jue Sep 28, 2006 9:34 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
Responder citando

¿Y qué problemas te da?
Mensaje Jue Sep 28, 2006 11:27 am
dailosmm
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Sep 2006
Mensajes: 4
Responder citando

explorer escribió:
¿Y qué problemas te da?


Hola:

he revisado bien el proceso, y el fichero que puse arriba finalmente si funciona (el problema estaba en el script que descargaba el fichero) Razz

Muchas gracias por tu ayuda, finalmente todo funciona.

Saludos
Publicar nuevo tema   Responder al tema    Foros de discusión -> CGI Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group