文件上傳的接口和普通接口傳參類似,有細微區別
目錄
1、文件上傳參數格式
2、舉個栗子
1、文件上傳參數格式
第一步:用fiddler抓取文件上傳接口的參數
注:fakepath是瀏覽器為了安全,顯示的一種路徑,填寫時,可以以真實為准
文件上傳接口參數與普通post請求接口一樣,需要寫成key和value模式,key為name值,value為一個元組(與普通接口不同的地方),
name取值:name取Name這一欄里面的“name”的值
value取值:元組第一個值取filename的值,沒有取None;第二個值,第一個值非None則取文件open打開的二進制流,否則取value的值;第三個值取Content-Type對應的值,若無則不填
實現代碼如下:
u={ "localUrl":(None,"E:\\1.png"), "imgFile":("1.png",open("E:\\1.png","rb"),"image/png") }
第二步:
發送post請求時,不再是data或者json,而是files
requests.post(url,files=X)
2、舉個栗子
向一個網站傳圖片
# coding:utf-8 import requests url1="http://mysrc.sinaapp.com/accounts/login/" s=requests.session() r=s.get(url1) #使用cookies的set方法將cookies信息填進去 c=requests.cookies.RequestsCookieJar() #域名一定要填寫,不然會報錯 c.set('csrftoken','efptBQUQSxN3AfWcjZAvWw0Kbtu1EjVz',path='/', domain='mysrc.sinaapp.com') c.set('sessionid','be2d02ddfe45681a852d21da7036f858',path='/', domain='mysrc.sinaapp.com') #更新一下cookies s.cookies.update(c) url2="http://mysrc.sinaapp.com/file_upload/?uuid=ec11f91e85b411e8930ebb639de404ef&dir=image" u={ "localUrl":(None,"1.png"), "imgFile":("1.png",open("D:\\1.png","rb"),"image/png") } r1=s.post(url2,files=u).json() #文件上傳參數用files print r1