12
votes

I am trying to upload a file using requests. I need to upload a PDF file and at the same time send some other data to the form like the author's name.

I tried this:

requests.get(url, files = {"file":open("file.txt"), "author" : "me" })

But it doesn't send data to the form.

1
An example is given in the documentation. Are you having problems with it? - Burhan Khalid
@BurhanKhalid please look at the question again - Dennis Ritchie

1 Answers

27
votes

So I understand that you want to upload to a URL, a pdf file along with some extra parameters.

First error that you have is you are using .get() and not .post().

I am using samples from the documentation, which you should go through. This should get you started:

>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('somefile.pdf', 'rb')}
>>> values = {'author': 'John Smith'}
>>> r = requests.post(url, files=files, data=values)