To upload a file using the requests
library in Python, you'll want to make use of the files
parameter in the requests.post()
function. This parameter allows you to send files as multipart/form-data, which is the standard way to upload files in HTML forms.
Here is an example of how you might upload a file using requests
:
import requests
# The URL to which you want to send the file
url = 'http://example.com/upload'
# The path to the file on your local filesystem
file_path = '/path/to/your/file.txt'
# Open the file in binary mode
with open(file_path, 'rb') as f:
# The form field name for the file upload (could be 'file', 'attachment', etc.)
files = {'file': (file_path, f)}
# POST request with the file
response = requests.post(url, files=files)
# Check the response
if response.ok:
print('Upload completed successfully!')
print(response.text)
else:
print('Upload failed.')
In this example, file_path
is the path to the file on your system that you want to upload, and url
is the URL to which you are uploading the file. The files
dictionary is where you specify the file data you want to send. The key should be the name of the form field for the file upload (as expected by the server), and the value is a tuple with the file name and the file object.
When you use the files
parameter, requests
automatically sets the Content-Type
header to multipart/form-data
, which is appropriate for file uploads.
Some servers might also require additional data (like authentication tokens) to be sent alongside the file. You can include this data using the data
parameter:
with open(file_path, 'rb') as f:
files = {'file': (file_path, f)}
data = {'token': 'YOUR_AUTH_TOKEN'}
response = requests.post(url, files=files, data=data)
Or, you might need to include custom headers:
with open(file_path, 'rb') as f:
files = {'file': (file_path, f)}
headers = {'Authorization': 'Bearer YOUR_AUTH_TOKEN'}
response = requests.post(url, files=files, headers=headers)
Always refer to the API documentation for the specific service you're uploading to for details on the expected parameters, headers, and other requirements.