• requests---requests上传图片


      我们在做接口测试的时候肯定会遇到一些上传图片,然后进行校验,今天我们一起学习通过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方库,这个我们下次在一起学习~~~持续更新中~~~

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

  • 相关阅读:
    git使用
    silverlight与wcf双向通讯 例子
    Oracle 存储过程
    C# 视频教程
    佩服的技术大牛 “赵劼”
    setTimeout setInterval
    js闭包
    MVC Razor视图引擎控件
    MVC json
    springboot创建多环境profile打包
  • 原文地址:https://www.cnblogs.com/qican/p/11419743.html
Copyright © 2020-2023  润新知