Mar Sep 26, 2006 9:41 am
|
 |
dailosmm
Perlero Nuevo

|
Registrado: 26 Sep 2006
Mensajes: 4
|
|
| Upload de ficheros y parámetros GET |
|
|
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. |
|
|
|

Mar Sep 26, 2006 10:21 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|

Mar Sep 26, 2006 10:38 am
|
 |
dailosmm
Perlero Nuevo

|
Registrado: 26 Sep 2006
Mensajes: 4
|
|
| limitaciones de flash |
|
|
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. |
|

Mar Sep 26, 2006 10:57 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
|
|
|
|
|
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 |
|
Mar Sep 26, 2006 11:02 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|
Mar Sep 26, 2006 11:03 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
|
|
|
|
|
| Sobre el tema del MIME, aquí tienes un enlace al módulo File::MimeInfo |
|

Jue Sep 28, 2006 5:31 am
|
 |
dailosmm
Perlero Nuevo

|
Registrado: 26 Sep 2006
Mensajes: 4
|
|
| Contenido del fichero en variable |
|
|
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, |
|

Jue Sep 28, 2006 9:34 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4213
Ubicación: Valladolid, España
|
|
|
|
|
| ¿Y qué problemas te da? |
|
Jue Sep 28, 2006 11:27 am
|
 |
dailosmm
Perlero Nuevo

|
Registrado: 26 Sep 2006
Mensajes: 4
|
|
|
|
|
| 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)
Muchas gracias por tu ayuda, finalmente todo funciona.
Saludos |
|
Powered by phpBB © 2001, 2005 phpBB Group
|