我们在做接口测试的时候肯定会遇到一些上传图片,然后进行校验,今天我们一起学习通过requests上传图片,查看是否上传成功

抓取上传接口

这里我以百度为例子进行操作,为啥要用百度呢,主要上传文件比较简单不用登录啥的~~~通过fiddler抓取上传图片的接口地址以及请求携带的参数内容

通过下面操作进行选择图片进行上传,然后通过fiddler进行分析接口内容

通过分析抓取的内容,我们可以看到接口地址为:“https://graph.baidu.com/upload”

请求的参数类型为from-data,这个类型后面会具体的介绍,这里先不具体说了,这里不影响我们操作

参数格式

这里在插个知识点,就是requests文档中有对上传文件单独书写,我们可以按照他们的标准进行书写详细的可以进行查看requests官方文档

参数书写情况为:

# 123.jpg为图片,与代码在当前目录下,image/jpeg 为图片格式
files = {
"tn":"pc",
"image":("123.jpg",open('123.jpg','rb'),"image/jpeg"),
"from":"pc",
"image_source":"PC_UPLOAD_SEARCH_FILE",
"range":'{"page_from": "searchIndex"}'
}

请求上传图片

选择图片

# coding:utf-8
import requests
url = "https://graph.baidu.com/upload"
files = {
"tn":"pc",
"image":("123.jpg",open('123.jpg','rb'),"image/jpeg"),
"from":"pc",
"image_source":"PC_UPLOAD_SEARCH_FILE",
"range":'{"page_from": "searchIndex"}'
}
r = requests.post(url,files=files)
print(r.json())

通过查看返回,点击链接进入到百度识图中

但是当我们点击进去后会发现浏览器好像放大了我们的页面一样,这是什么鬼?哪里出错误了吗?

原来是我们在填写数据的时候数据的格式写错了,有一些参数没有添加,我们要表示为None

# 每个value其实都是有2个参数,只是其中一个没有,那么如果我们不穿的话就会出现刚才的问题,这个是需要传None
files = {
"tn":(None,"pc"),
"image":("123.jpg",open('123.jpg','rb'),"image/jpeg"),
"from":(None,"pc"),
"image_source":(None,"PC_UPLOAD_SEARCH_FILE"),
"range":(None,'{"page_from": "searchIndex"}')
}

通过修改后的链接,我们再一次取请求,查看这次的情况,发现是好的,突然感叹到python太强大了~~

通过一个小的例子,我们学习了如何通过requests发送from-data的数据类型,但是如果想要上传大文件,需要安装第3方库,这个我们下次在一起学习~~~持续更新中~~~

如果感觉写的对您有帮助,可以右下角点击个关注哦~~点关注,不迷路。

最新文章

  1. Javascript数组操作(转)
  2. 前端弹出对话框 js实现 ajax交互
  3. Netty学习一:基本知识
  4. 在Ubuntu14.04下安装vsftp服务器
  5. 怎样关闭google的自动更新
  6. BestCoder Round #87 1001
  7. NOIP2013普及组 T2 表达式求值
  8. CSS hack常用方案(摘选)
  9. Migration of ASP.NET app from IIS6 to IIS7 (7.5)
  10. 强制杀oracle进程
  11. MongoDB入门命令
  12. .Net Core MongoDB 简单操作。
  13. React Suite v3.0 正式版发布
  14. SpringMVC+GSON 对象序列化--日期格式的处理
  15. TiDB 架构及设计实现
  16. Docker使用Link与newwork在容器之间建立连接
  17. 路由表flags的U值引起的能ping通网关,ping不通其它网段的案例
  18. cordova打包webapp
  19. EBS测试环境DataGuard配置
  20. CSS属性大全

热门文章

  1. UWP GridView切换数据时界面闪动
  2. C# 打开文件/跳转链接
  3. How to: Implement a Custom Base Persistent Class 如何:实现自定义持久化基类
  4. SAP用户角色分配函数权限
  5. SQL Server启动/关闭xp_cmdshell
  6. Viewpager+Fragment 跳转Activity报错android.os.TransactionTooLargeException: data parcel size xxxxx bytes
  7. vmware vsphere client 虚拟机动态添加磁盘
  8. 数据库迁移导致Unknown character set: 'GBK' 应用异常
  9. python 爬虫 随机换user-agent
  10. 一天两道pat(3)1007,1008