首頁 > 後端開發 > Python教學 > 如何在Python中使用檔案和標準表單資料發送多部分錶單資料?

如何在Python中使用檔案和標準表單資料發送多部分錶單資料?

Patricia Arquette
發布: 2024-12-25 07:51:12
原創
539 人瀏覽過

How to Send Multipart Form Data with Files and Standard Form Data in Python?

如何在 Python 中建構多部分錶單資料請求

問題:如何使用 requests 函式庫在 Python 中傳送多部分錶單資料?雖然我了解如何附加文件,但我正在努力將標準表單資料合併到此類請求中。

答案:

當檔案傳送時,要求會自動處理多部分錶單資料指定參數,導致multipart/form-data POST 要求而不是application/x- www-form-urlencoded POST.

語法:

from requests import post

response = post(
    url,
    files={
        "form_field_name": "form_field_value",     # No quotes needed for non-string values
    }
)
登入後複製

範例:

response = post("http://httpbin.org/post", files={"foo": "bar"})
assert response.status_code == 200
登入後複製

高階控制>

使用元組進行自訂每個部分的檔案名稱、內容類型和附加標頭。元組組件包括:

    檔名(可選)
  • 內容
  • 內容類型(可選)
  • 標題字典(可選)

範例:

files = {"foo": (None, "bar")}   # No filename specified
登入後複製

有序多個欄位:

使用元組列表對於有序或具有相同的多個欄位name.

處理資料和檔案:

同時使用資料和檔案時,字串資料參數優先。否則,資料和文件都會合併在請求中。

可選庫:

requests-toolbelt 專案提供高級多部分支持,允許:

    從檔案物件串流
  • 無預設檔名參數
  • 使用元組的自訂檔案名稱、部分 MIME類型和額外標頭

請求工具帶範例:

import MultipartEncoder from requests_toolbelt

fields = {
    "foo": b"bar",    # Fields support bytes objects
    "spam": ("spam.txt", open("spam.txt", "rb"), "text/plain")   # Stream files
}

mp_encoder = MultipartEncoder(fields)

response = post(
    url,
    data=mp_encoder,
    headers={"Content-Type": mp_encoder.content_type}
)
登入後複製

注意: 對於requests-toolbelt 方法,不要使用files= 參數以MultipartEncoder 以資料有效負載發布。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板