使用 requests 庫傳送多部分表單資料

金木大大大發表於2023-11-17

使用requests庫傳送多部分表單資料時,使用者想要在不上傳檔案的情況下傳送資料。解決這個問題的方法有兩種,一種是使用requests庫的files引數,另一種是使用其他庫如toolbelt。下面我將詳細介紹這兩種方法。


方法一:使用requests庫的files引數


在使用requests庫傳送多部分表單資料時,通常需要使用`files`引數來指定要上傳的檔案或資料。但是,如果使用者不想上傳檔案,只是想傳送一些資料,可以透過以下方法來實現:


```python

import requests


# 定義要傳送的資料,以字典形式表示

data = {

    'key1': 'value1',

    'key2': 'value2'

}


# 使用requests.post()方法傳送資料,同時將files引數設定為空字典

response = requests.post(' data=data, files={})


# 列印響應內容

print(response.text)

```


在上面的示例中,我們將要傳送的資料儲存在一個字典中,並使用`requests.post()`方法傳送資料,同時將`files`引數設定為空字典。這樣就可以在不上傳檔案的情況下,傳送多部分表單資料。


**方法二:使用其他庫如toolbelt**


除了使用requests庫的files引數外,還可以考慮使用一些其他庫來簡化傳送多部分表單資料的過程。一個常用的庫是toolbelt,它提供了更簡單的方法來實現這個功能。


首先,需要安裝toolbelt庫:


```bash

pip install requests-toolbelt

```


然後,可以使用toolbelt庫的`MultipartEncoder`類來建立多部分表單資料,如下所示:


```python

from requests_toolbelt.multipart.encoder import MultipartEncoder

import requests


# 建立一個MultipartEncoder物件,並新增要傳送的資料

encoder = MultipartEncoder(

    fields={

        'key1': 'value1',

        'key2': 'value2'

    }

)


# 設定請求頭,包括Content-Type

headers = {'Content-Type': encoder.content_type}


# 傳送POST請求

response = requests.post(' data=encoder, headers=headers)


# 列印響應內容

print(response.text)

```


使用toolbelt庫,我們可以輕鬆地建立多部分表單資料,並將其作為請求的資料部分傳送,而無需擔心邊界等細節。


**結論**


在使用requests庫傳送多部分表單資料時,可以透過使用requests庫的files引數,或者使用其他庫如toolbelt,來實現在不上傳檔案的情況下,仍能傳送多部分表單資料的功能。需要注意的是,由於requests庫的內部實現,可能存在一些限制,因此在使用時需要特別注意。希望這篇文章對你有所幫助!如果有任何疑問,請隨時提出。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70032566/viewspace-2995828/,如需轉載,請註明出處,否則將追究法律責任。

相關文章