.. _multipart: POST Multiple Multipart-Encoded Files ------------------------------------- You can send multiple files in one request. For example, suppose you want to upload image files to an HTML form with a multiple file field 'images':: To do that, just set files to a list of tuples of ``(form_field_name, file_info)``:: >>> url = 'http://httpbin.org/post' >>> multiple_files = [ ('images', ('foo.png', open('foo.png', 'rb'), 'image/png')), ('images', ('bar.png', open('bar.png', 'rb'), 'image/png'))] >>> r = requests.post(url, files=multiple_files) >>> r.text { ... 'files': {'images': 'data:image/png;base64,iVBORw ....'} 'Content-Type': 'multipart/form-data; boundary=3131623adb2043caaeb5538cc7aa0b3a', ... } .. warning:: It is strongly recommended that you open files in `binary mode`_. This is because Requests may attempt to provide the ``Content-Length`` header for you, and if it does this value will be set to the number of *bytes* in the file. Errors may occur if you open the file in *text mode*. .. _binary mode: https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files