python requests完成接口文件上傳的案例
最近在準備一個公開課,主題就是利用不同的語言和不同的工具去實現(xiàn)文件的上傳和下載。
在利用Jmeter去實現(xiàn)功能的時候,以及利用loadrunner去寫腳本的時候,都很順利,沒有任何問題,當我嘗試用Python去解決這個問題的時候,花了一些時間。
這也讓我在學(xué)習(xí)和嘗試中,找到了很多樂趣,下面給大家分享下,如何去實現(xiàn)操作。
前提:
1:有一個上傳接口,地址如下:http://xx.xx.xx.xx//upload/stream(公司的服務(wù),地址不便外發(fā)~有興趣的同志可以來看我們的公開課!)
2:上傳接口的參數(shù)如下所示:
{"parentId":"","fileCategory":"personal","fileSize":179,"fileName":"summer_text_0920.txt","uoType":1}
其中有兩個參數(shù)需要跟大家解釋一下:filesize:指的是文件的字節(jié)大小。 filename:指的是你上傳之后保存的文件名~記得不要搞錯了后綴喲。其他的參數(shù)可以忽略,在做自己公司接口的時候,就按照自己公司的接口文檔去做即可。
開始操作:
1:安裝requests模塊,安裝命令:pip install requests
2:發(fā)送請求,代碼如下所示:
header={"ct":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"} files = {'file':open('D:\\test_data\\summer_test_data_05.txt','rb')}#此處是重點!我們操作文件上傳的時候,把目標文件以open打開,然后存儲到變量file里面存到一個字典里面 upload_data={"parentId":"","fileCategory":"personal","fileSize":179,"fileName":"summer_text_0920.txt","uoType":1} upload_res=requests.post(upload_url,upload_data,files=files,headers=header)##此處是重點!我們操作文件上傳的時候,接口請求參數(shù)直接存到upload_data變量里面,在請求的時候,直接作為數(shù)據(jù)傳遞過去
查看結(jié)果:
執(zhí)行完代碼后,看到我們上傳成功,效果如下:
大家如果有上傳文件的接口,趕緊去試試吧!
學(xué)習(xí)了代碼后,有些事情就會顯得輕松多啦!
補充:python實現(xiàn)接口上傳文件的兩種方法
文件上傳:上傳圖片的類型是file,這里沒有用到頭部信息
import requests def sendImg(img_path, img_name, img_type='image/jpeg'): """ :param img_path:圖片的路徑 :param img_name:圖片的名稱 :param img_type:圖片的類型,這里寫的是image/jpeg,也可以是png/jpg """ url = 'https://www.xxxxxxxxxx.com' # 自己想要請求的接口地址 with open(img_path + img_name, "rb")as f_abs:# 以2進制方式打開圖片 body = { # 有些上傳圖片時可能會有其他字段,比如圖片的時間什么的,這個根據(jù)自己的需要 'camera_code': (None, "攝像頭1"), 'image_face': (img_name, f_abs, img_type) # 圖片的名稱、圖片的絕對路徑、圖片的類型(就是后綴) "time":(None, "2019-01-01 10:00:00") } # 上傳圖片的時候,不使用data和json,用files response = requests.post(url=url, files=body).json return response if __name__=='__main__': # 上傳圖片 res = sendImg(img_path, img_name) # 調(diào)用sendImg方法 print(res) **如果上傳圖片是數(shù)組時,value直接寫圖片路徑就可以**
文件上傳:上傳的類型是file,用到頭部信息
# "Content-Type": "multipart/form-data; boundary=76a22e30da2bb7790828887966871012" from urllib3 import encode_multipart_formdata import requests def sendFile(filename, file_path): """ :param filename:文件的名稱 :param file_path:文件的絕對路徑 """ url = "https://www.xxxxxxx.com" # 請求的接口地址 with open(file_path, mode="r", encoding="utf8")as f: # 打開文件 file = { "file": (filename, f.read()),# 引號的file是接口的字段,后面的是文件的名稱、文件的內(nèi)容 "key": "value", # 如果接口中有其他字段也可以加上 } encode_data = encode_multipart_formdata(file) file_data = encode_data[0] # b'--c0c46a5929c2ce4c935c9cff85bf11d4\r\nContent-Disposition: form-data; name="file"; filename="1.txt"\r\nContent-Type: text/plain\r\n\r\n...........--c0c46a5929c2ce4c935c9cff85bf11d4--\r\n headers_from_data = { "Content-Type": encode_data[1], "Authorization": token } # token是登陸后給的值,如果你的接口中頭部不需要上傳字段,就不用寫,只要前面的就可以 # 'Content-Type': 'multipart/form-data; boundary=c0c46a5929c2ce4c935c9cff85bf11d4',這里上傳文件用的是form-data,不能用json response = requests.post(url=url, headers=headers_from_data, data=file_data).json() return response if __name__=='__main__': # 上傳文件 res = sendFile(filename, file_path) # 調(diào)用sendFile方法 print(res)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
- python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng)
- Python requests timeout的設(shè)置
- python+requests+pytest接口自動化的實現(xiàn)示例
- python3 解決requests出錯重試的問題
- Python requests庫參數(shù)提交的注意事項總結(jié)
- python urllib.request模塊的使用詳解
- python爬取豆瓣電影排行榜(requests)的示例代碼
- requests在python中發(fā)送請求的實例講解
- python 實現(xiàn)Requests發(fā)送帶cookies的請求
- python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解
- python requests庫的使用
- python實現(xiàn)文件+參數(shù)發(fā)送request的實例代碼
- Python爬蟲基礎(chǔ)之requestes模塊
相關(guān)文章
python實現(xiàn)圖像處理之PiL依賴庫的案例應(yīng)用詳解
這篇文章主要介紹了python實現(xiàn)圖像處理之PiL依賴庫的案例應(yīng)用詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07Python使用Selenium模塊實現(xiàn)模擬瀏覽器抓取淘寶商品美食信息功能示例
這篇文章主要介紹了Python使用Selenium模塊實現(xiàn)模擬瀏覽器抓取淘寶商品美食信息功能,涉及Python基于re模塊的正則匹配及selenium模塊的頁面抓取等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07python實現(xiàn)excel轉(zhuǎn)置問題詳解
這篇文章主要介紹了python實現(xiàn)excel轉(zhuǎn)置問題詳解,excel轉(zhuǎn)置分為兩種情況,一個是較為簡單的只需要行轉(zhuǎn)列,列轉(zhuǎn)行,具體詳解,感興趣的小伙伴可以參考一下2022-09-09python提效小工具之統(tǒng)計xmind用例數(shù)量(源碼)
這篇文章主要介紹了python提效小工具之統(tǒng)計xmind用例數(shù)量,利用python開發(fā)小工具,實現(xiàn)同一份xmind文件中一個或多個sheet頁的用例數(shù)量統(tǒng)計功能,需要的朋友可以參考下2022-10-10