Sending Multipart/Form-Data Using Requests in Python
Multipart/form-data is a request format that allows for both form data and files to be sent in a single request. To use this format with requests in Python, specify a files parameter, which should be a dictionary where the keys are form data parameter names and the values are either file paths or tuples containing file content.
The following example demonstrates sending a file along with a text form value:
import requests files = {'file_field': 'path/to/file.ext', 'text_field': 'text_value'} response = requests.post('http://example.com/upload', files=files)
Controlling Filename and Content Type
You can control the filename and content type of each part by using a tuple as the value in the files dictionary. The tuple should contain 2 to 4 elements, as follows:
For example, to specify a filename and content type for a text value:
files = {'text_field': (None, 'text_value', 'text/plain')}
Specifying Multiple Fields with the Same Name
To send multiple fields with the same name, use a list of tuples as the value in the files dictionary.
Using Requests-Toolbelt for Advanced Multipart Support
The requests-toolbelt project provides advanced Multipart support. Unlike requests, it defaults to not setting a filename parameter and allows fields to be streamed from open file objects.
Here's an example using requests-toolbelt:
from requests_toolbelt.multipart.encoder import MultipartEncoder mp_encoder = MultipartEncoder( fields={ 'file_field': ('file.ext', open('path/to/file.ext', 'rb'), 'application/octet-stream'), 'text_field': 'text_value', } ) response = requests.post( 'http://example.com/upload', data=mp_encoder, headers={'Content-Type': mp_encoder.content_type} )
The above is the detailed content of How to Send Multipart/Form-Data with Files and Form Data Using Python's Requests Library?. For more information, please follow other related articles on the PHP Chinese website!