国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python基于requests實現模擬上傳文件

瀏覽:66日期:2022-07-29 13:29:38

方法1:

1.安裝requests_toolbelt依賴庫

#代碼實現def upload(self): login_token = self.token.loadTokenList() for token in login_token: tempPassword_url = self.config[’crm_test_api’]+’/document/upload’ tempPassword_data = self.data_to_str.strToDict(’’’title:1.png course_name_id:63 course_id:1112 desc:7 doc_type:1 is_public:1’’’,value_type=’str’) files={’file’: (’1.png’, open(’C:UsersAcerPicturesScreenshots1.png’, ’rb’), ’image/png’)} tempPassword_data.update(files) m = MultipartEncoder(fields=tempPassword_data ) tempPassword_headers = {'Content-Type': m.content_type, 'token': token} tempPassword_request = requests.post(url=tempPassword_url,data=m,headers=tempPassword_headers) print(tempPassword_request.content)

2.組裝MultipartEncoder對象需要的參數:將tempPassword_data的字段合并至files

1.files參數介紹:

1.字典key對應file字段(我們系統是這樣,具體結合前端實際的字段為準),如圖

Python基于requests實現模擬上傳文件

2.字典value里面的對象:

1.filename(服務器最終存儲的文件名)

2.filepath(具體的文件路徑,注意轉義),文件是以二進制的形式進行傳輸的,所以這里傳輸時以二進制的形式打開文件并傳輸

3.content_type:具體結合前端實際的字段為準:一般可定義為: 文本(text)/圖片(image)等[/code][code]

3.tempPassword_data:為文件上傳時的附帶參數

strToDict方法:自己手寫的一個字符串轉dict的方法

遇到的問題:

Python基于requests實現模擬上傳文件

這個錯誤是說,int對象不能被編碼,所以需要手動將int對象轉換為str,所以我在此方法中定義了value_type這個參數,用于將字典中的所有value轉換為str類型

#具體代碼實現,僅供參考def strToDict(str_in,value_type=None): # value_type:轉換字典的value為指定的類型,未防止異常,目前僅支持str # ’’’將str轉換為dict輸出’’’ # ’’’將帶有time關鍵字的參數放到字符串末尾’’’ # print(str_in) if str_in: match_str = ’:’ split_str = ’n’ split_list = str_in.split(split_str) str_in_dict = {} for i in split_list:colon_str_index = i.find(match_str)if colon_str_index == -1: # ’’’處理firefox復制出來的參數’’’ match_str = ’t’ or ’ ’ colon_str_index = i.find(match_str)# ’’’去掉key、value的空格,key中的引號’’’str_in_key = i[:colon_str_index].strip()str_in_key = str_in_key.replace(’'’,’’)str_in_key = str_in_key.replace('’',’’)# 正則過濾無用key,只保留key第一位為字母數據獲取[]_str_sign = re.search(’[^a-zA-Z0-9_[]+]’, str_in_key[0])if str_sign is None: # 處理value中的空格與轉義符 str_in_value = i[colon_str_index + 1:].strip() str_in_value=str_in_value.replace(’’,’’) try: # 遇到是object類型的數據轉換一下 str_in_value=eval(str_in_value) except BaseException as error: str_in_value=str_in_value if value_type in [’str’,’string’]: str_in_value=str(str_in_value) else: str_in_value=str_in_value str_in_dict[str_in_key] = str_in_value return str_in_dict else: print('參數都沒有,還處理個球嘛') return None

3.請求時將headers的content設置為m.content_type,會設置headers的content_type為form—data,類型為str:

MultipartEncoder相關源碼:

Python基于requests實現模擬上傳文件

Python基于requests實現模擬上傳文件

4.請求時設置data為m,會輸出一個MultipartEncoder對象:

Python基于requests實現模擬上傳文件

方法2:

直接使用requests,無需依賴requests_toolbelt庫

過程大同小異,也是需要將字典的value轉換為str

注意:headers不要傳content_type字段,headers不要傳content_type字段,headers不要傳content_type字段

請求時:data對應附加參數,files對應files對象

#相關代碼def upload(self): login_token = self.token.loadTokenList() for token in login_token: tempPassword_url = self.config[’crm_test_api’]+’/document/upload’ tempPassword_data = self.data_to_str.strToDict(’’’title:1.png course_name_id:63 course_id:1112 desc:7 doc_type:1 is_public:1’’’,value_type=’str’) files={’file’: (’1.png’, open(’C:UsersAcerPicturesScreenshots1.png’, ’rb’), ’image/png’)} tempPassword_headers = {'token': token} tempPassword_request = requests.post(url=tempPassword_url,data=tempPassword_data,files=files,headers=tempPassword_headers) print(tempPassword_request.json())

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 手机在线观看亚洲国产精品 | 在线免费观看亚洲视频 | 一道精品视频一区二区三区图片 | 永久精品免费影院在线观看网站 | 国产精品一区亚洲一区天堂 | 操操综合 | 免费一级欧美片片线观看 | f性欧美| 欧美成人鲁丝片在线观看 | 免费亚洲成人 | 永久免费不卡在线观看黄网站 | 久草热视频在线观看 | 一级美女黄色片 | 亚洲午夜精品久久久久久抢 | 日韩欧美一区二区三区不卡在线 | 亚洲精品美女视频 | 亚洲精品色一区二区三区 | 222aaa天堂| 日韩精品在线观看免费 | 精品在线观看免费 | 欧美国产日韩一区二区三区 | 69日本xxxxxxxxx13 69视频成人 | 一个人看的www日本视频 | 91香蕉国产线在线观看免费 | 一级特级欧美aaaaa毛片 | 99福利资源久久福利资源 | f性欧美| 免费视频成人 | 美女一级片视频 | 杨晨晨福利视频 | 国产精品1区2区 | 免费刺激视频 | 欧美在线视频 一区二区 | 美女视频黄a视频免费全程 美女视频黄a视频免费全过程 | 一级aaa级毛片午夜在线播放 | 久久99国产精品亚洲 | 亚洲aⅴ在线 | 免费看美女毛片 | 亚洲综合91社区精品福利 | 亚洲欧美综合国产精品一区 | 男人又粗又硬桶女人免费 |