How to send JSON as part of multipart POST-request
You are setting the header yourself, including a boundary. Don't do this; requests
generates a boundary for you and sets it in the header, but if you already set the header then the resulting payload and the header will not match. Just drop you headers altogether:
def send_request():
payload = {"param_1": "value_1", "param_2": "value_2"}
files = {
'json': (None, json.dumps(payload), 'application/json'),
'file': (os.path.basename(file), open(file, 'rb'), 'application/octet-stream')
}
r = requests.post(url, files=files)
print(r.content)
Note that I also gave the file
part a filename (the base name of the file
path`).
For more information on multi-part POST requests, see the advanced section of the documentation.