用From-data传递文件和附加参数

公司项目,不同操作用的都是同一个接口,用的识别码不同,所以做其他操作的时候,直接把识别码作为参数传入就可以,但是传递文件时,就会失败,在网上找了很多方法,都不行,最后还是试出来一种可靠的方式。

我传递的是图片的二进制文件,本地图片可以直接用from urllib import requestrequest.urlopen('path').read()来获取图片的二进制文件,如果是url文件,将path改为url地址即可。

请求过程

请求头

headers = {
         'User-Agent':’xxxx‘ ,
         'cookie':'根据实际情况' ,
         'Content-Type': 'multipart/form-data'  
         }

如果上传失败,可以尝试注释掉 'Content-Type': 'multipart/form-data'

请求数据

request_data = { 'key': 'value' }

写上自己需要传递的值

上传文件
上传文件单独构造成以下形式
# ‘image’ 上传文件的键名
# ‘135.png’ 上传到目的地的文件名,可以和上传的文件名不同
# open(‘135.png’,‘rb’) 打开的文件对象,注意文件路径正确
# ‘image/png’ Content-Type类型

  request_file = {'image': (image)}

因为我上传的是二进制文件 ,所以多余的参数都没有写,只有键和文件内容,完整的写法是

  request_file = {'image': (image,'135.png'),open('135.png','rb',image/png)}

大概是这样,有不对的就换一下括号的位置,具体记不清了,可能会有出入。

最后发出请求

upload_resp = requests.post(url=upload_url, data=request_data, files=request_file, headers=headers)

查看响应状态 print(upload_resp.status.code)
查看响应信息 print(upload_resp.json())

这就是详细的上传步骤


版权声明:本文为buling_me原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。