Kent Johnson escreveu:
> Paulino wrote:
>> Hello!
>>
>>
>> How can I upload a file from python?
>>
>> If it is a form to fill with values it's simple:
>>
>>
>> urlopen("http://site.com/action?key1=value1;key2=value2") and I get
>> the form filled.
>>
>>
>> What about uploading a file programmaticaly?
>
> This might help:
>
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306
>
> Kent
>
>
Thank You very much Luke, Alan, David and Kent.
I used Nokia's forum recipe (sugested by David) it's very simple and
works perfectly!
here is it (a few variables changed)
import httplib, urllib
import base64, os.path
def uploadToURL( aPath ):
# read the binary data of the pdf
data = open(aPath, 'rb').read()
# encoded it to base64
encodedData = base64.encodestring( data )
headers = { "Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain" }
params = urllib.urlencode({ 'filename': os.path.split(aPath)[1],
'file_data':encodedData})
conn = httplib.HTTPConnection( "localhost:8080" )
conn.request( "POST", "/rendas/rec/uploadtxt", params, headers )
response = conn.getresponse( )
# returns "True" or "False" if failed
print response.read( )
# status for debugging
#print response.status
conn.close( )
if __name__ == "__main__":
uploadToURL("/home/paulino/ola230.pdf")
And here is the turbogears server method that handles the file:
@expose()
def uploadtxt(self, file_data, **kw):
data = base64.decodestring(file_data)
f = open(kw['filename'], 'wb')
f.write(data)
f.close()
return "Success"
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor