在提交表单 *** 作的时候,经常会遇到图片上传的 *** 作,图片上传是一个单独的接口,本篇以禅道为例,介绍如何上传图片
上传接口1.以禅道上提交BUG为例,在选择图片时,点确定按钮,就是上传图片了
2.用fiddler抓包,查看抓到的接口,以下这种接口就是multipart/form-data
Content-Type: multipart/form-databody参数是这种格式:-----------------------------22165374713946
Content-disposition: form-data; name="localUrl"
yoyoketang.png
-----------------------------22165374713946
Content-disposition: form-data; name="imgfile"; filename="yoyoketang.png"
Content-Type: image/png
1.因为上传图片是在登录之后 *** 作的,这个需要依赖用户登录
# Coding:utf-8import requestsbase = 'http://127.0.0.1:81/' # 禅道的服务器地址loginUrl = base+"/Zentao/user-login.HTML"h = { "User-Agent": "Mozilla/5.0 (windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 firefox/44.0", "Accept": "text/HTML,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-EnCoding": "gzip, deflate", "Referer": "http://127.0.0.1/Zentao/user-login.HTML", # "cookie": # 头部没登录前不用传cookie,因为这里cookie就是保持登录的 "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", }body = {"account":"admin", "password":"e10adc3949ba59abbe56e057f20f883e", "keepLogin[]":"on", "referer":"http://127.0.0.1/Zentao/my/" }s = requests.session() # 保持会话r = s.post(loginUrl, data=body, headers=h)print r.content # 打印结果看到location='http://127.0.0.1/Zentao/my/'说明登录成功了
上传图片1.上传图片以下这种格式:
-----------------------------22165374713946
Content-disposition: form-data; name="localUrl"
yoyoketang.png
-----------------------------22165374713946
Content-disposition: form-data; name="imgfile"; filename="yoyoketang.png"
Content-Type: image/png
2.写成字典格式,key对应name="imgfile"这里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")
}
1.获取上传后的地址,放到浏览器的地址栏请求下,看是不是刚才上传的图片
参考代码# Coding:utf-8import requestsbase = 'http://127.0.0.1:81/' # 禅道的服务器地址loginUrl = base+"/Zentao/user-login.HTML"h = { "User-Agent": "Mozilla/5.0 (windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 firefox/44.0", "Accept": "text/HTML,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-EnCoding": "gzip, deflate", "Referer": "http://127.0.0.1/Zentao/user-login.HTML", # "cookie": # 头部没登录前不用传cookie,因为这里cookie就是保持登录的 "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", }body = {"account":"admin", "password":"e10adc3949ba59abbe56e057f20f883e", "keepLogin[]":"on", "referer":"http://127.0.0.1/Zentao/my/" }s = requests.session() # 保持会话r = s.post(loginUrl, data=body, headers=h)print r.content # 打印结果看到location='http://127.0.0.1/Zentao/my/'说明登录成功了# 上传图片url1 = "http://127.0.0.1:81/Zentao/file-AJAXUpload-5a26aca290b59.HTML?dir=image"f ={ "localUrl": (None,"1.png"), "imgfile": ("1.png", open("d:\1.png", "rb"), "image/png") }r = s.post(url1, files=f)try: jpgurl = base+r.Json()["url"] print(u"上传图片后的URL地址:%s"%jpgurl)except Exception as msg: print(u"返回值不是Json格式:%s"%str(msg)) print(r.content)
---------------------------------python接口自动化完整版-------------------------
全书购买地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695
作者:上海-悠悠 QQ交流群:588402570
也可以关注下我的个人公众号:yoyoketang
总结以上是内存溢出为你收集整理的python接口自动化16-multipart/form-data上传图片全部内容,希望文章能够帮你解决python接口自动化16-multipart/form-data上传图片所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)