enviar fichero por post

Ernesto Revilla erny en sicem.biz
Lun Jun 21 14:45:42 CEST 2004


Acabo de redactar una receta[1] con código sacado de algún proyecto, 
pero me parece mucho más interesante que uses ClientForm[2], un paquete 
muy completo y mucho más fácil de usar.

En mi receta, mira lo que devuelve HTTPopen que devuelve una tupla con 
los resultados de la solicitud: (response.status, response.reason, data, 
responseheaders)


[1] http://www.sicem.biz/personal/erny/python/recetaMandarPostAPaginaWeb
[2] http://wwwsearch.sourceforge.net


Respecto a tu mensaje, creo que las cabeceras no están bien, deberían 
ser algo como:
Content-type: multipart/form-data; boundary=boundary1

y la parte para mandar un archivo es algo como:

--boundary1

Content-Disposition: form-data; name=Nombrearchivo.xml
Content-Type: text/xml 

Aquí viene el archivo....
.....

--boundary1--

Erny


Carlos Tabasco Guzmán escribió:

>Estoy intentado rehacer el codigo de una aplicación en PERL :
>
>  
>

>  my $ua = LWP::UserAgent->new;
>    my $request = POST "$host_remoto/destino",
>    Content_Type => 'form-data',
>    Content      => [ ACTION => $parametros{'ACCION'},
>                      OPTION => $parametros{'OPCION'},
>                      TIMESTAMP => $parametros{'TIMESTAMP'},
>                      AUTH => $parametros{'AUTH'},
>                      FILENAME => [$parametros{'ARCHIVO'}]];
>
>
>	$var= [$parametros{'ARCHIVO'}];
>	print $var;
>	my $response = $ua->request($request);
>    my $content = $response->content ();
>
>Simplemente se envia por post varios valores y se inlcuye un fichero en
>xml , en perl mediante el doble corchete se manda el archivo y no
>encuentro ninguna forma de hacerlo con python correctamente, el problema
>es que no funciona si  meto el fichero en una variable y lo envio, estoy
>apunto de la desesperación no puedo avanzar en mi programa :P.
>Esto es mas o menos lo que he ido haciendo en PYTHON :
>
>parametros =
>urllib.urlencode({'ACTION':accion,'OPTION':opcion,'TIMESTAMP':tiempo,
>							'AUTH':clave,'FILENAME':{"filename": "alumno.xml"}})
>
>	cabeceras={"Content-type":"form-data",
>		"Accept":"text/plain",
>		"Accept":"text/html"}
>
>
>	print parametros
>	conn = httplib.HTTPConnection(host)
>	conn.request("POST", "destino",parametros, cabeceras)
>
>	response = conn.getresponse()
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>  
>




Más información sobre la lista de distribución Python-es