雖然現在基本上都約定俗成的介面都用json形式請求
但是不可避免地有些介面需要傳文件流,此時就需要用form-data形式上傳了
#for.e:
存在以下接口,透過接口創建海報圖但需要上傳縮圖,
此時接口的Content-Type就不能是application/json ,而是multipart/form-data;
參數格式也是以表單形式傳入
postman中設定檔案流很簡單,設定問file格式,然後就可以在本機選擇檔上傳,見下圖
實際請求介面就可以成功
使用python完成上方請求需要明確的請求方式及資料類型以及上傳檔案讀取檔案
import requests import json from requests_toolbelt.multipart.encoder import MultipartEncoder url='http://XXX.xxx.xxx.xx:9900/api-marketing-center/poster/save' data={'activityName':'我是个海报2', 'backgroundPicUrl':'https://xxxxx/default/f865a1aa66adfe50d005bd840e2c3356.jpg', 'copywriting':'我是个海报 看看我2', 'endTime':'2021-08-14 16:00:00', 'startTime':'2021-08-11 16:00:00', 'giftPicUrl':'https://xxxxx/file/c363c3173ac7c02393bf60018031073d.PNG', 'qrCodeUrl':'https://xxxxxx/file/c363c3173ac7c02393bf60018031073d.PNG', 'posterUrlThumbnail':'文件' } files = {"posterUrlThumbnail": open('C:/Users/Lenovo/Desktop/格式测试/12.PNG', "rb")} headers={'AUTH_MERCHANTS_ID': '76', 'Authorization': 'Bearer ad8cbdf3-c827-470a-aba5-076f0f3a9628'} r=requests.post(url=url,params=data, headers=headers,files=files) print(r.json()) #{'code': 0, 'msg': '操作成功', 'data': None}
data:輸入請求的參數,其中需要注意上傳檔案流的參數名稱
files = {"posterUrlThumbnail": open( 'C:/Users/Lenovo/Desktop/格式測試/12.PNG', "rb")}
posterUrlThumbnail為參數名稱用於賦值,開啟文件,讀取賦值
上方使用最簡單的寫死的headers,
呼叫requests函式庫的方法去請求
#即可得到結果
當然也可以複雜點封裝個登入方法,去呼叫登錄,取得token以及所需的頭部參數
以上是怎麼使用form-data形式上傳檔案請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!