首頁 >後端開發 >Python教學 >如何使用 Requests 和 Requests-Toolbelt 在 Python 中發送多部分/表單資料請求?

如何使用 Requests 和 Requests-Toolbelt 在 Python 中發送多部分/表單資料請求?

Linda Hamilton
Linda Hamilton原創
2024-12-26 10:37:14617瀏覽

How to Send Multipart/Form-Data Requests in Python using Requests and Requests-Toolbelt?

在 Python 中使用請求發送多部分/表單資料

Requests提供了發送多部分/表單資料請求的能力,允許文件上傳和表單資料提交.

文件上傳

要上傳文件,只需在文件中指定鍵值對參數,其中鍵是表單欄位名稱,值為開啟的檔案物件或檔案路徑。例如:

import requests

with open('image.jpg', 'rb') as f:
    file_data = {'image': f}

response = requests.post('http://example.com/upload', files=file_data)

表單資料提交

要傳送表單數據,您也可以使用files參數。但是,與文件上傳不同,值不是文件對象,而是字串或位元組。

要指定表單數據,請使用字典,其中鍵是表單欄位名稱,值是要提交的資料。例如:

form_data = {'username': 'myusername', 'password': 'mypassword'}

response = requests.post('http://example.com/login', files=form_data)

合併文件和表單資料

您可以使用檔案和資料參數同時上傳檔案和提交表單資料。如果資料是字串,則將使用它而不是檔案。如果資料是字典,它將與文件合併。

例如:

form_data = {'comment': 'Hello, world!'}
file_data = {'image': 'image.jpg'}

response = requests.post('http://example.com/post', data=form_data, files=file_data)

Requests-Toolbelt 的高階多部分支援

requests-toolbelt庫提供增強的多部分支持,包括高級功能,例如:

  • 流資料上傳
  • 自訂檔名和MIME 類型
  • 每個部分的額外標頭

要使用requests-toolbelt,請透過pip install requests-toolbelt 安裝它並按照以下步驟操作:

  1. 導入必要的模組:
from requests_toolbelt.multipart.encoder import MultipartEncoder
mp_encoder = MultipartEncoder(
    fields={
        'field_name': 'field_value',
        ('file_name', 'file_content', 'file_type'),
        # Other form data fields and files can be added here
    }
)
創建一個MultipartEncoder物件:
headers = {'Content-Type': mp_encoder.content_type}
response = requests.post('http://example.com/post', data=mp_encoder, headers=headers)
Make HTTP協定request:

透過使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,您可以使用這些方法,可以使用這些方法在Python中無縫發送多部分/表單資料請求,以進行文件上傳和表單資料提交。

以上是如何使用 Requests 和 Requests-Toolbelt 在 Python 中發送多部分/表單資料請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn