首頁 >後端開發 >Python教學 >如何使用 Python 的請求庫發送包含文件和表單資料的多部分/表單資料?

如何使用 Python 的請求庫發送包含文件和表單資料的多部分/表單資料?

Barbara Streisand
Barbara Streisand原創
2024-12-13 12:25:13400瀏覽

How to Send Multipart/Form-Data with Files and Form Data Using Python's Requests Library?

在Python 中使用請求發送Multipart/Form-Data

Multipart/form-data 是一種請求格式,允許表單資料和要在單一請求中傳送的文件。若要在 Python 中的請求中使用此格式,請指定一個 files 參數,該參數應該是一個字典,其中鍵是表單資料參數名稱,值是檔案路徑或包含檔案內容的元組。

以下範例示範發送文件和文字表單值:

import requests

files = {'file_field': 'path/to/file.ext', 'text_field': 'text_value'}

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

控製檔案名稱和內容Type

您可以透過使用元組作為文件字典中的值來控制每個部分的檔案名稱和內容類型。此元組應包含2 到4 個元素,如下所示:

  • 元素1: 檔案名稱(可選)
  • 元素2 : 內容
  • 元素3(可選):內容type
  • 元素 4(可選): 額外標頭

例如,要指定文字值的檔案名稱和內容類型:

files = {'text_field': (None, 'text_value', 'text/plain')}

指定多個相同的字段名稱

要發送多個同名字段,請使用元組列表作為文件字典中的值。

使用 Requests-Toolbelt 實現高階多部分支援

requests-toolbelt 專案提供了進階的 Multipart 支援。與請求不同,它預設不設定檔案名稱參數,並允許從開啟的檔案物件串流傳輸欄位。

這是使用 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}
)

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

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