1. import requests
  2.  
  3. def sendImg(img_path, img_name, img_type='image/jpeg'):
  4. """
  5. :param img_path:图片的路径
  6. :param img_name:图片的名称
  7. :param img_type:图片的类型,这里写的是image/jpeg,也可以是png/jpg
  8. """
  9. url = 'https://www.xxxxxxxxxx.com' # 自己想要请求的接口地址
  10.  
  11. with open(img_path + img_name, "rb")as f_abs:# 2进制方式打开图片
  12. body = {
  13. # 有些上传图片时可能会有其他字段,比如图片的时间什么的,这个根据自己的需要
  14.  
  15. 'camera_code': (None, "摄像头1"),
  16.  
  17. 'image_face': (img_name, f_abs, img_type)
  18. # 图片的名称、图片的绝对路径、图片的类型(就是后缀)
  19.  
  20. "time":(None, "2019-01-01 10:00:00")
  21.  
  22. }
  23. # 上传图片的时候,不使用data和json,用files
  24. response = requests.post(url=url, files=body).json
  25. return response
  26.  
  27. if __name__=='__main__':
  28. # 上传图片
  29. res = sendImg(img_path, img_name) # 调用sendImg方法
  30. print(res)

**如果上传图片是数组时,value直接写图片路径就可以**

文件上传:上传的类型是file,用到头部信息

  1. from urllib3 import encode_multipart_formdata
  2. import requests
  3.  
  4. def sendFile(filename, file_path):
  5. """
  6. :param filename:文件的名称
  7. :param file_path:文件的绝对路径
  8. """
  9. url = "https://www.xxxxxxx.com" # 请求的接口地址
  10. with open(file_path, mode="r", encoding="utf8")as f: # 打开文件
  11. file = {
  12. "file": (filename, f.read()),# 引号的file是接口的字段,后面的是文件的名称、文件的内容
  13. "key": "value", # 如果接口中有其他字段也可以加上
  14. }
  15.  
  16. encode_data = encode_multipart_formdata(file)
  17.  
  18. file_data = encode_data[0]
  19. # b'--c0c46a5929c2ce4c935c9cff85bf11d4\r\nContent-Disposition: form-data; name="file"; filename="1.txt"\r\nContent-Type: text/plain\r\n\r\n...........--c0c46a5929c2ce4c935c9cff85bf11d4--\r\n
  20.  
  21. headers_from_data = {
  22. "Content-Type": encode_data[1],
  23. "Authorization": token
  24. }
  25. # token是登陆后给的值,如果你的接口中头部不需要上传字段,就不用写,只要前面的就可以
  26. # 'Content-Type': 'multipart/form-data; boundary=c0c46a5929c2ce4c935c9cff85bf11d4',这里上传文件用的是form-data,不能用json
  27.  
  28. response = requests.post(url=url, headers=headers_from_data, data=file_data).json()
  29. return response
  30.  
  31. if __name__=='__main__':
  32. # 上传文件
  33. res = sendFile(filename, file_path) # 调用sendFile方法
  34. print(res)

原文:https://blog.csdn.net/xy_best_/article/details/92839653

python接口上传图片和文件的方法的更多相关文章

  1. python 读写、创建 文件的方法(必看)

    python 读写.创建 文件的方法(必看) 更新时间:2016年09月12日 10:26:41 投稿:jingxian 我要评论下面小编就为大家带来一篇python 读写.创建 文件的方法(必看). ...

  2. python接口自动化(响应对象方法)

    python接口自动化(响应对象方法) 一.encoding作用 获取请求的编码(在不设置响应编码时,响应的信息默认使用的是请求的编码格式):r.encoding 设置响应的编码:r.encoding ...

  3. python linecache模块读取文件的方法

    转自: python linecache模块读取文件 在Python中,有个好用的模块linecache,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行. l ...

  4. 用AJAX实现上传图片或者文件的方法

    大家好,我是小C,最近在项目中用到ajax上传图片文件,本篇我们就说说ajax上传文件. 我们平时用到的AJAX,大部分都是传几个参数就可以了.简单说就是传几个字符串. $.ajax({ url: u ...

  5. python接口自动化7-post文件上传

    前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...

  6. Python接口自动化测试-下载文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : shenqiang ''' 注意:定义类的时候,内部方法之间的互调 步骤: 1.按照 ...

  7. Python中读取csv文件内容方法

    gg 224@126.com 85 男 dd 123@126.com 52 女 fgf 125@126.com 23 女 csv文件内容如上图,首先导入csv包,调用csv中的方法reader()创建 ...

  8. Python之转换py文件为无需依赖python环境的exe文件的方法

    在日常工作中,使用python脚本开发快速敏捷,但是其代码是可见的,而且充分的依赖python开发环境.为了达到保护我们源码的目的,或者不依赖python开发环境使用python脚本,将其转换成可以直 ...

  9. Python引用某一文件的方法出现红色波浪线

    from parse import parse_url#引用parse里面的方法 结果出现波浪线并提示 This inspection detects names that should resolv ...

随机推荐

  1. xml的解析(概述)

    使用java解析xml☆☆☆ 四个类:分别是针对dom和sax解析使用的类   -dom :     DocumentBuilder:解析器类       -这个类是个抽象类,不能new,       ...

  2. 2019年上半年收集到的人工智能AutoML干货文章

    2019年上半年收集到的人工智能AutoML干货文章 自动机器学习简述(AutoML) 谷歌将AutoML应用于Transformer架构,翻译结果飙升,已开源 IBM推出AutoAI,让企业人工智能 ...

  3. 【LeetCode】1056-易混淆数

    易混淆数 给定一个数字 N,当它满足以下条件的时候返回 true:把原数字旋转180°以后得到新的数字.如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 ...

  4. HttpClient的使用今天遇到一个巨坑——HttpEntity内容取不出来

    在使用HttpPost httpPost = new HttpPost(postUrl);的post请求后,拿到返回的response,response返回200成功. 到此没有任何问题. respo ...

  5. [20190510]rman备份的疑问8.txt

    [20190510]rman备份的疑问8.txt --//上午测试rman备份多个文件,探究input memory buffer 的问题.--//补充测试5个文件的情况.--//http://blo ...

  6. apicloud含有微信支付。支付宝支付和苹果内购的代码

    apicloud含有微信支付.支付宝支付和苹果内购的代码 <!DOCTYPE html> <html> <head> <meta charset=" ...

  7. centos 7下配置阿里yum源

    1.打开centos的yum文件夹 cd /etc/yum.repos.d/ 2.用wget下载repo文件 wget http://mirrors.aliyun.com/repo/Centos-7. ...

  8. UGUI Manual

    以Unity 5.5 的官方文档为例 Canvas UI元素的前后顺序:SetAsFirstSibling, SetAsLastSibling, and SetSiblingIndex BasicLa ...

  9. vue高频面试题(面试路上踩过的坑)

    ### Vue 双向绑定原理 mvvm 双向绑定,采用**数据劫持结合发布者-订阅者模式**的方式,通过 `Object.defineProperty()` 来劫持各个属性的 setter.gette ...

  10. RAID几种方式

    RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...