目录

1.上传文件 代码实例

2.files参数 字典类型

3.files参数 元组列表类型


1.上传文件 代码实例

在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下:

import requestsurl = 'http://127.0.0.1/upload'
files = {'file': open('D:/test.apk', 'rb')}
data = {'xxx':xxx,'xxx':xxx}response = requests.post(url, files=files, data=data)
json = response.json()
print(json)

data参数:是需要发送普通的数据字段

files参数:是需要上传的文件信息,可以接受很多种形式的数据,最基本的2种形式为:

  • 字典类型
  • 元组列表类型

2.files参数 字典类型

官方推荐使用的字典参数格式如下:

{"field1" : ("filename1", open("filePath1", "rb")),"field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"),"field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"})
} 

这个字典的key就是发送post请求时的字段名, 而字典的value则描述了准备发送的文件的信息;从上面可以看出value可以是2元组,3元组或4元组。这个元组的每一个字段代表的意思一次为

("filename", "fileobject", "content-type", "headers")

缺省的话则会使用默认值。除了上面的使用形式,其实requests还是支持一个更简洁的参数形式,如下

{"field1" : open("filePath1", "rb"),"field2" : open("filePath2", "rb"),"field3" : open("filePath3", "rb")
}

这种形式的参数其等同效果如下, 其中filename是filepath的文件名

{"field1" : ("filename1", open("filePath1", "rb")),"field2" : ("filename2", open("filePath2", "rb")),"field3" : ("filename3", open("filePath3", "rb"))
}

当然,你还可以这样发送一个文件请求

{"field1" : open("filePath1", "rb").read()
}

这里的filename的值为field1

3.files参数 元组列表类型

其实元组列表的形式与字典的形式基本一样,除了最外层的包装不一样;而在requests内部最终会把字典参数形式 转换 为 元组列的形式。官网推荐的用法如下:

[("field1" : ("filename1", open("filePath1", "rb"))),["field2" : ("filename2", open("filePath2", "rb"), "image/jpeg")],("field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"}))
]

列表里面的子项可以是元组,也可以是列表;同样这里也支持简介的形式,如下:

[("field1" : open("filePath1", "rb"))),  ##filename 使用的是filepath的文件名("field2" : open("filePath2", "rb").read())) ##filename 使用的是键值,即 field2
]

python requests 发送 上传 多个文件相关推荐

  1. [转]python的requests发送/上传多个文件

    1.需要的环境 Python2.X Requests 库 2.单字段发送单个文件 在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下: u ...

  2. python 中文姓名库,Python Requests库上传文件中文文件名处理方法是什么

    使用Python Requests库,提交POST请求上传文件,不支持中文文件名? 使用Python Requests库,向微信服务器上传媒体问题. 当使用英文文件名称,上传时,一切OK. 当下面代码 ...

  3. Python实现向s3共享存储上传和下载文件

    Python实现向s3共享存储上传和下载文件 https://www.cnblogs.com/liang545621/p/10298617.html 使用Python从S3上传和下载文件 https: ...

  4. python requests 上传文件_Fastapi 上传多个文件(包含服务器端和python客户端代码)...

    Fastapi有上传多个文件的接口代码,亲测可用.缺点是:使用浏览器接口文档操作比较方便,如果客户端没有浏览器,使用python写的代码来上传文件,则调了很久都调不成功.Fastapi官方链接:Fas ...

  5. python调用接口上传文件_python上传文件接口

    文件的参数组装: ('文件名',"open打开的文件(rb模式打开)",'文件的类型说明') 关于不同的请求参数类型,使用requests的处理: 1.文件上传(Content-T ...

  6. YDOOK: Sanic: Python request post请求 上传照片或文件 详细具体步骤 亲测可用!

    YDOOK: Sanic: Python request post请求 上传照片或文件 详细具体步骤 亲测可用! ©YDOOK JYLin 1. 项目目录架构: Upload result: 上传结果 ...

  7. python flask上传文件_flask 文件上传(单文件上传、多文件上传)--

    文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...

  8. python模拟浏览器上传文件_Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)...

    http协议本身的原始方法不支持multipart/form-data请求,这个请求由原始方法演变而来的. multipart/form-data的基础方法是post,也就是说是由post方法来组合实 ...

  9. Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器

    Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...

最新文章

  1. java js关键字_js中的instanceof关键字
  2. 申报成功后怎样修改_【小白教程】12月第3期《申报成功后,如何更正,快快收藏!》...
  3. 信息系统项目管理师_信息系统项目管理师历史文章总结
  4. Redis 哨兵Sentinel 文档
  5. VTK:选择像素用法实战
  6. HTTPS 传参数(Query String)安全吗?
  7. Redis集群客户端添加数据报错(error) CLUSTERDOWN The cluster is down
  8. android 55
  9. 安卓java虚拟机_Android虚拟机与Java虚拟机 两种虚拟机的比较
  10. 我的世界装mod要下java_【新人必看教程】我的世界HMCL下载安装mod模组
  11. 个性化制作nodemcu-firmware(esp8266/esp8285 固件制作)----包含lua程序bin的制作
  12. excel单元格内容拆分_Excel技巧:帮你把单元格内容颠倒顺序显示
  13. python求幂_python矩阵求幂
  14. 解决微信页面加载自动播放音乐
  15. centos7安装otrs
  16. android关于 text_to_speach的使用(tts)
  17. HR让回去等通知,到底啥意思?
  18. 黑马程序员——【学习笔记】集合——String、StringBuffer 以及集合
  19. 01【Web】基础-HTML
  20. Stochastic dominance 随机优势

热门文章

  1. ubuntu安装时N卡黑屏处理
  2. 日记 [2007年04月05日]QMAIL服务器回顾
  3. Tungsten Fabric SDN — 软件架构
  4. Linux 安装 TigerVNC
  5. windows 7架设OpenSSH服务器实践
  6. 力扣(LeetCode)31
  7. Confluence 6 找到在创建 XML 备份的时候出现的错误
  8. 【总结整理】关于IE6的兼容性
  9. Egret里用矢量挖圆形的洞
  10. ASP.NET Core配置环境变量和启动设置