I am trying to upload a file with PUT using the requests module in python.
my code is this:
with open(file, 'rb') as payload:
r = requests.put(url, data=payload, auth=('username', 'password'))
The file is created, I am getting a response 200, but it has 0 bytes. If I am not doing something wrong I suspect that I have met the bug here.
Is this the case? If yes is there any workaround that I can try?
I've tried also the same with the httplib2 library
with open(file, 'rb') as payload:
h = httplib2.Http(".cache")
h.add_credentials('user', 'pass')
resp, content = h.request(url, "PUT", body=payload)
But the request stays hanging for ever (again a 0 size file is created). Could it also be the same problem with the requests module?
[EDIT] Some extra info.
The service receiving the PUT is running on a ESXi hypervisor. It has a function where if you make an authed PUT request it stores the file of the request in /tmp. The server side is working (tested it with a perl script which does the same job and also with curl).
The file uploaded is a .tgz file which lies on my local filesystem and the url is in the form of "http://esx-server/tmp/file.tgz"
.