With the Requests module,its is only necessary to provide a file handle as opposed to the contents retrieved with .read()
:
from requests import post
files = {'file' : open('data.txt', 'rb')}
foo = post('http://http.org/post', files=files)
Filename, content_type and headers can also be set:
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
foo = requests.post('http://httpbin.org/post', files=files)
Strings can also be sent as a file, as long they are supplied as the files
parameter.
Multiple Files
Multiple files can be supplied in much the same way as one file:
multiple_files = [
('images', ('foo.png', open('foo.png', 'rb'), 'image/png')),
('images', ('bar.png', open('bar.png', 'rb'), 'image/png'))]
foo = post('http://httpbin.org/post', files=multiple_files)