[Python] Upload file

Manlio Perillo manlio.perillo a gmail.com
Gio 1 Mar 2012 16:55:20 CET


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 01/03/2012 16:37, Diego Barrera ha scritto:
> Ciao a tutti,
> devo fare l'upload di un file csv verso una pagina remota.
> Utilizzando urllib e urllib2 riesco a spedire il file facendo:
> 
> [code]
> 
> data={'user_file':open('/home/diego/file_to_upload.csv','r').read()}
> data = urllib.urlencode(data)
> response=urllib2.urlopen(urllib2.Request(url_remota, data, headers))
> 
> [/code]
> 
> Il problema e' che cosi' facendo invio si il contenuto del file, ma non
> come vorrei:
> infatti facendo una piccola pagina di prova in php:
> 
> [code]
> 
> echo "file=".$_FILES['user_file']."\n";
> echo "file=".$_POST['user_file']."\n";
> 
> [/code]
> 
> il primo echo non restituisce niente, il secondo stampa il contenuto del
> file.
> 
> In sostanza vorrei inviare il file come se fosse stato fatto l'upload
> con un form ed il campo file.
> Penso di essermi spiegato a pene di labrador :)

Probabilmente PHP si aspetta i dati codificati in multipart/form-data.

La libreria standard di Python purtroppo non offre nessuna funzione per
fare questo.
La soluzione è usare una libreria esterna (come già ti hanno suggerito),
oppure scriverti a mano la funzione.

Da una veloce ricerca su google:
http://code.activestate.com/recipes/146306/
http://bugs.python.org/issue3244



Ciao  Manlio

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk9Pm+cACgkQscQJ24LbaUQtOgCeK2Lbp0WwiyLFnlMJLzq02X+3
D9AAnjnvslAJTPD6vULZA3C2DHR5pixC
=TI/5
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python