中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在python中使用requests上傳多個文件

發布時間:2021-04-07 17:41:15 來源:億速云 閱讀:623 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關如何在python中使用requests上傳多個文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1、需要的環境

Python2.X
Requests 庫

2、單字段發送單個文件

在requests中發送文件的接口只有一種,那就是使用requests.post的files參數, 請求形式如下:

url = "http://httpbin.org/post" 
data = None 
files = { ... } 
r = requests.post(url, data, files=files)

而這個files參數是可以接受很多種形式的數據,最基本的2種形式為:

字典類型

元組列表類型

2.1、字典類型的files參數

官方推薦使用的字典參數格式如下:

{ 
 "field1" : ("filename1", open("filePath2", "rb")), 
 "field2" : ("filename2", open("filePath3", "rb"), "image/jpeg"), 
 "field3" : ("filename3", open("filePath4", "rb"), "image/jpeg", {"refer" : "localhost"}) 
}

這個字典的key就是發送post請求時的字段名, 而字典的value則描述了準備發送的文件的信息;從上面可以看出value可以是2元組,3元組或4元組;

這個元組的每一個字段代表的意思一次為:

("filename", "fileobject", "content-type", "headers")

缺省的話則會使用默認值

除了上面的使用形式,其實requests還是支持一個更簡潔的參數形式,如下

{ 
 "field1" : open("filePath2", "rb")), 
 "field2" : open("filePath3", "rb")), 
 "field3" : open("filePath4", "rb")) 
}

這種形式的參數其等同效果如下, 其中filename是filepath的文件名:

{ 
 "field1" : ("filename1", open("filePath2", "rb")), 
 "field2" : ("filename2", open("filePath3", "rb")), 
 "field3" : ("filename3", open("filePath4", "rb")) 
}

當然,你還可以這樣發送一個文件請求

{ 
 "field1" : open("filePath2", "rb").read()) 
}

這里的filename的值為field1

2.2、元組列表類型的files參數

其實元組列表的形式與字典的形式基本一樣,除了最外層的包裝不一樣;而在requests內部最終會把字典參數形式 轉換 為 元組列的形式。官網推薦的用法如下:

[ 
 ("field1" : ("filename1", open("filePath2", "rb"))), 
 ["field2" : ("filename2", open("filePath3", "rb"), "image/jpeg")], 
 ("field3" : ("filename3", open("filePath4", "rb"), "image/jpeg", {"refer" : "localhost"})) 
]

列表里面的子項可以是元組,也可以是列表;同樣這里也支持簡介的形式,如下:

[ 
 ("field1" : open("filePath2", "rb"))), ##filename 使用的是filepath的文件名 
 ("field2" : open("filePath3", "rb").read())) ##filename 使用的是鍵值,即 field2 
]

3、單字段發送多個文件【即上傳文件時,設置為多選了】

3.1、字典參數形式

{ 
 "field1" : [ 
   ("filename1", open("filePath2", "rb")), 
   ("filename2", open("filePath3", "rb"), "image/png"), 
   open("filePath4", "rb"), 
   open("filePath5", "rb").read() 
  ] 
}

3.2、元組列表形式

[ 
 ("field1" , ("filename1", open("filePath2", "rb"))), 
 ("field1" , ("filename2", open("filePath3", "rb"), "image/png")), 
 ("field1" , open("filePath4", "rb")), 
 ("field1" , open("filePath5", "rb").read()) 
]

上面2種形式發送的請求,所有的文件都會在同一個字段下,后臺服務只要從field1字段就可以獲取全部的文件對象

4、同時發送普通數據字段

上面介紹的是使用發送文件內容請求,而有時候我們在發送文件的同時還需要發送普通的數據字段,此時普通數據字段直接存在data參數中即可,如下:

data = {"k1" : "v1"} 
files = { 
 "field1" : open("1.png", "rb") 
} 
r = requests.post("http://httpbin.org/post", data, files=files)

看完上述內容,你們對如何在python中使用requests上傳多個文件有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图片| 长阳| 元江| 南岸区| 离岛区| 利川市| 南城县| 肇东市| 彭山县| 怀远县| 茂名市| 乌苏市| 灌南县| 合山市| 沽源县| 湖南省| 宁陵县| 华阴市| 武功县| 门源| 卢湾区| 惠安县| 海丰县| 德钦县| 汉中市| 麻城市| 普陀区| 肥乡县| 大竹县| 衡阳县| 沧州市| 平武县| 江源县| 柞水县| 铜陵市| 吐鲁番市| 宁津县| 达拉特旗| 平凉市| 龙游县| 三门峡市|