python自动上传图片_python接口自动化(二十一) multipart/form-data上传图片

前言

在提交表单操作的时候,经常会遇到图片上传的操作,图片上传是一个单独的接口,本篇以禅道为例,介绍如何上传图片

上传接口

1.以禅道上提交bug为例,在选择图片时,点确定按钮,就是上传图片了。

2.用fiddler抓包,查看抓到的接口,以下这种接口就是multipart/form-data

先登录

1.因为上传图片是在登录之后操作的,这个需要依赖用户登录

登录需要先访问一次url,提取rand值,然后对rand和原密码进行md5加密。

上传图片

1.上传图片以下这种格式:

2.写成字典格式,key对应name="imgFile"中的"imgFile"

3.value里面是一个元组()

第一个参数是filename=后面对应的值,没有就写None

第二个是上面的这个值“2.png",或者是”文件open打开的二进制流。备注:尝试使用“2.png”,可以生成url,但访问url无图片

第三个是Content-Type对应的类型,如“image/png”

f={

"localUrl":(None,"33.png"),

"imgFile":("33.png",open("33.png","rb"),"image/png")

}

验证是否上传成功

1.获取上传后的地址,放到浏览器的地址栏请求下,看是不是刚才上传的图片

参考代码

注意:上传图片是files参数

# coding:utf-8

import requests

import re

import hashlib

pw="P@ssw0rd"

s=requests.Session()

headers={

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"

}

vrand=0

while(True):

rs1=s.get("http://localhost/zentaopms/www/user-login.html",headers=headers)

rs1.encoding='utf-8'

#print(rs1.text)

rand=re.findall(r"'verifyRand' value='(.+?)'",rs1.text)

#print(rand[0])

if len(rand[0])==10:

vrand=rand[0]

break

print(vrand)

#方式一

hash=hashlib.md5()

hash.update(pw.encode('utf-8'))

f=hash.hexdigest()+vrand

#print(f)

#方式二

hash2=hashlib.md5(f.encode('utf-8'))

pwd=hash2.hexdigest()

print(pwd)

data={

"account":"fuhui",

"password":pwd,

"referer":"http://localhost/zentaopms/www/bug-browse-6.html",

"verifyRand":vrand

}

rs2=s.post("http://localhost/zentaopms/www/user-login.html",headers=headers,data=data)

rs2.encoding='utf-8'

#print(rs2.text)

rs3=s.get("http://localhost/zentaopms/www/bug-browse-6.html",headers=headers)

rs3.encoding='utf-8'

#print(rs3.text)

result=re.findall(r"\(.+?)\",rs3.text)

print(result)

if result[0]=="退出":

print("登录成功")

#上传图片

urlp="http://localhost/zentaopms/www/file-ajaxUpload-5f2b5bf056387.html?dir=image"

f={

"localUrl":(None,"33.png"),

"imgFile":("33.png",open("33.png","rb"),"image/png")

}

rp=s.post(urlp,files=f)

rp.encoding="utf-8"

try:

purl="http://localhost"+rp.json()["url"]

print("上传图片后,图片的url:{}".format(purl))

except Exception as msg:

print("返回值不是json格式的,错误为:{}".format(msg))

#print(rp.content)

#print(rp.text.encode("utf-8").decode("unicode_escape"))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值