网站优化建议怎么写,七牛云,唱片公司网站模板,wordpress图片中文不显示解决一、单字段发送单个文件
url http://httpbin.org/post data None files { ... } r requests.post(url, data, filesfiles)
而这个files参数是可以接受很多种形式的数据#xff0c;最基本的2种形式为字典类型和元祖列表类型
1、字典类型的files参数
{ http://httpbin.org/post data None files { ... } r requests.post(url, data, filesfiles)
而这个files参数是可以接受很多种形式的数据最基本的2种形式为字典类型和元祖列表类型
1、字典类型的files参数
{ field1 : (filename1, open(filePath1, rb)), field2 : (filename2, open(filePath2, rb), image/jpeg), field3 : (filename3, open(filePath3, rb), image/jpeg, {refer : localhost}) }
这个字典的key就是发送post请求时的字段名 而字典的value则描述了准备发送的文件的信息从上面可以看出value可以是2元组3元组或4元组 缺省的话则会使用默认值。除了上面的使用形式其实requests还是支持一个更简洁的参数形式如下
{
field1 : open(filePath1, rb),
field2 : open(filePath2, rb),
field3 : open(filePath3, rb)
} { field1 : (filename1, open(filePath1, rb)), field2 : (filename2, open(filePath2, rb)), field3 : (filename3, open(filePath3, rb))
}
2、元祖列表类型的files参数
其实元组列表的形式与字典的形式基本一样除了最外层的包装不一样而在requests内部最终会把字典参数形式 转换 为 元组列的形式。官网推荐的用法如下
[ (field1 : (filename1, open(filePath1, rb))), [field2 : (filename2, open(filePath2, rb), image/jpeg)], (field3 : (filename3, open(filePath3, rb), image/jpeg, {refer : localhost})) ] 列表里面的子项可以是元组也可以是列表同样这里也支持简介的形式如下
[ (field1 : open(filePath1, rb))), ##filename 使用的是filepath的文件名 (field2 : open(filePath2, rb).read())) ##filename 使用的是键值即 field2 ] 二、单字段发送多个文件即上传文件时设置为多选了
2.1、字典参数形式
{ field1 : [ (filename1, open(filePath1, rb)), (filename2, open(filePath2, rb), image/png), open(filePath3, rb), open(filePath4, rb).read() ] }
2.2、元组列表形式
[ (field1 , (filename1, open(filePath1, rb))), (field1 , (filename2, open(filePath2, rb), image/png)), (field1 , open(filePath3, rb)), (field1 , open(filePath4, rb).read()) ] 三、上传单张图片实例
3.1、用fiddler抓包查看接口请求格式和图片传参格式
Content-Typemultipart/form-data
Content-Type: image/png Content-Disposition: form-data; namefile; filenamefile.png 3.2、上传图片
urlXXXXXXXXXXXXXX/1.0/bd/user/punch_clock files{file: (1.png, open(rC:\Users\wangli\PycharmProjects\InterfaceAutomationTesting\case\1.png, rb), image/png)} headers{Authorization:bearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9vbnNpdGUtYXBpLnN0MS50ZXN0LmxhbnhpbmthLmNvbVwvMS4wXC9hZG1pblwvbWFuYWdlclwvbG9naW4iLCJpYXQiOjE1NTkxMjkzNjIsImV4cCI6MTU2MTgwNzc2MiwibmJmIjoxNTU5MTI5MzYyLCJqdGkiOiI4Y0VweGdnVDc3NjFwRkxnIiwic3ViIjoyMzUsInBydiI6IjA1NzdiNDFmNTRlMDk1YTNkOGNhMjM3NDM2NTAxYjhiN2IxZmU0YTQifQ.RUeRExypNq2sWY7CCOwH60xBEDgvRMytYKxEE2Ze35k} rrequests.post(urlurl,headersheaders,filesfiles) print(r.json()) 四、上传图片实例
4.1.上传图片以下这种格式 -----------------------------22165374713946 Content-Disposition: form-data; namelocalUrl
yoyoketang.png -----------------------------22165374713946 Content-Disposition: form-data; nameimgFile; filenameyoyoketang.png Content-Type: image/png
2.写成字典格式key对应nameimgFile这里name对应的值
3.value里面是一个元组
第一个参数是filename后面对应的值没有就写None第二个是上面的这个值“”yoyoketang.png“”或者是文件open打开的二进制流第三个是Content-Type对应的类型如image/png
f { localUrl: (None,1.png), imgFile: (1.png, open(d:\1.png, rb), image/png) } # 上传图片
url1 http://127.0.0.1:81/zentao/file-ajaxUpload-5a26aca290b59.html?dirimage
f { localUrl: (None,1.png), imgFile: (1.png, open(d:\\1.png, rb), image/png) }
r s.post(url1, filesf) 五、上传图片实例
urlhttp://ta.2boss.cn/rabbit/v1/user/addAdvise data{advise:测试上传图片,customerId:47066750, images:[http:\/\/2boss.oss-cn-hangzhou.aliyuncs.com\/54a0e078e4f4588d4a6efdfafa8cc621.jpg, http:\/\/2boss.oss-cn-hangzhou.aliyuncs.com\/82f7ad533662ca918f75035b8bc063f6.jpg]} headers{TBSAccessToken:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6ImY3NDA4MWUzLTVhYzgtNDRkNS05NWFlLWM1OGM0ZmRhOWEyNCIsInNjb3BlIjoiQ09OU1VNRVIiLCJpc3MiOiJodHRwOi8vbGl5b3UuY28iLCJleHAiOjE1NjE3Nzg0MjcsInVzZXJJZCI6OTUxNTMsImV4cGlyZXNBdCI6MTU2MTc3ODQyNzcyNX0.4ZKIhwgQTTqxabsLs9_wX5r-dkaULgqfA2ENhkSnZPo} rrequests.post(urlurl,headersheaders,jsondata) print(r.json()) 六、传多个附件
1.传多个文件的时候如下这两个参数的name都是一样的如果用字典去传key值很显然python的key值是不能重复的
Content-Disposition: form-data; namefiles[]; filename1.png
Content-Type: image/png
Content-Disposition: form-data; namefiles[]; filename2.png
Content-Type: image/png
2.这时候需要换个格式传list数据
# file {
# files[]: (1.png, open(d:\\1.png, rb), image/png),
# labels[]: tu1,
# }
#-------------多个文件用list类型------------
file [
(files[], (2.png, open(d:\\1.png, rb), image/png)),
(labels[], tu1),
(files[], (2.png, open(d:\\2.png, rb), image/png)),
(labels[], tu2),
]