python requests post multipart/form-data=json

Python Requests Post Multipart/Form-Data=JSON

If you're working with APIs, it's important to know how to make HTTP requests with Python. One way to do this is using the Requests library, which makes it easy to interact with web services.


Multipart/form-data is a data format used to upload files and other data to web servers. It's commonly used in HTML forms that allow users to upload files. When you submit a form with file input, the browser sends a request with content type multipart/form-data. This request contains the file data and other form data encoded as key-value pairs.


JSON (JavaScript Object Notation) is a lightweight data interchange format. It's used to transmit data between a server and a web application as an alternative to XML.

Python Requests Library

Python Requests is a library for making HTTP requests in Python. It abstracts the complexities of making requests behind a simple API, allowing you to send HTTP/1.1 requests extremely easily.

To make a POST request with multipart/form-data=JSON using Python Requests, you'll need to:

  1. Import the requests library
  2. Choose the file you want to upload
  3. Set the content type header to multipart/form-data
  4. Create a dictionary of the form data and JSON data
  5. Send the request to the server using the post() method of the requests library

Code Example

Here's some example code:

import requests
import json

# Choose the file you want to upload
file = {'file': open('myfile.csv', 'rb')}

# Set content type header to multipart/form-data
headers = {'Content-Type': 'multipart/form-data'}

# Create dictionary of form data and JSON data
data = {'name': 'John Doe', 'age': '30'}
json_data = json.dumps(data)

# Send request to server using post() method of requests library
response =, headers=headers, files=file, data=json_data)


In this example, we're uploading a file called myfile.csv, and also sending some form data and JSON data to the server. We set the content type header to multipart/form-data, and use the post() method of the requests library to send the request.


Making HTTP requests with Python Requests is simple and easy. By understanding the basics of multipart/form-data and JSON, you can build more complex applications that interact with web services.