multipart_formdata
import requests
def sendImg(img_path, img_name, img_type='image/jpeg'):
	"""
	:param img_path:图片的路径
	:param img_name:图片的名称
	:param img_type:图片的类型,这里写的是image/jpeg,也可以是png/jpg
	"""
	url = 'https://www.xxxxxxxxxx.com' # 自己想要请求的接口地址
with open(img_path + img_name, "rb")as f_abs:# 以2进制方式打开图片
		body = {
			# 有些上传图片时可能会有其他字段,比如图片的时间什么的,这个根据自己的需要
'camera_code': (None, "摄像头1"),
'image_face': (img_name, f_abs, img_type)
			# 图片的名称、图片的绝对路径、图片的类型(就是后缀)
"time":(None, "2019-01-01 10:00:00")
}
		# 上传图片的时候,不使用data和json,用files
		response = requests.post(url=url, files=body).json
		return response
if __name__=='__main__':
    # 上传图片
    res = sendImg(img_path, img_name)          # 调用sendImg方法
	print(res)
**如果上传图片是数组时,value直接写图片路径就可以**
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
# "Content-Type": "multipart/form-data; boundary=76a22e30da2bb7790828887966871012"
from urllib3 import encode_multipart_formdata
import requests
def sendFile(filename, file_path):
	"""
	:param filename:文件的名称
	:param file_path:文件的绝对路径
	"""
	url = "https://www.xxxxxxx.com" # 请求的接口地址
    with open(file_path, mode="r", encoding="utf8")as f: # 打开文件
		file = {
				"file": (filename, f.read()),# 引号的file是接口的字段,后面的是文件的名称、文件的内容
				"key": "value", # 如果接口中有其他字段也可以加上
					}
encode_data = encode_multipart_formdata(file)
file_data = encode_data[0] 
		# b'--c0c46a5929c2ce4c935c9cff85bf11d4\r\nContent-Disposition: form-data; name="file"; filename="1.txt"\r\nContent-Type: text/plain\r\n\r\n...........--c0c46a5929c2ce4c935c9cff85bf11d4--\r\n
headers_from_data = {
					"Content-Type": encode_data[1], 
					"Authorization": token
							} 
		# token是登陆后给的值,如果你的接口中头部不需要上传字段,就不用写,只要前面的就可以
		# 'Content-Type': 'multipart/form-data; boundary=c0c46a5929c2ce4c935c9cff85bf11d4',这里上传文件用的是form-data,不能用json
response = requests.post(url=url, headers=headers_from_data, data=file_data).json()
		return response
if __name__=='__main__':
    # 上传文件
    res = sendFile(filename, file_path)          # 调用sendFile方法
	print(res)
1、https://blog.csdn.net/xy_best_/article/details/92839653
2、https://www.jianshu.com/p/231e4773f7f3
3、https://www.jianshu.com/p/0023bb7afddb
multipart_formdata的更多相关文章
- 打造适用于c#的feign
		之前因为工作原因使用spring cloud全家桶开发过若干项目,发现其中的feign非常好用,以前开发接口客户端的时候都是重复使用HttpClient实现业务,每次新增接口都十分繁琐,故萌生了自定义 ... 
随机推荐
- ROC-RK3328-CC开源主板运行LibreELEC系统
			LibreELEC是运行Kodi媒体中心的轻量级操作系统,基于Linux内核发行,系统为适配Kodi运行环境,做了许多优化和精简,运行速度快,操作简单.是一款很优秀的多功能播放器操作系统. ROC-R ... 
- bfs—迷宫问题—poj3984
			迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20591 Accepted: 12050 http://poj ... 
- 信息竞赛进阶指南--Tire树
			// 假设字符串由小写字母构成 int trie[SIZE][26], tot = 1; // Trie的插入 void insert(char* str) { int len = strlen(st ... 
- ACM学习心得
			今天打比赛,调整好了心态,不管rank榜,所以做的比上次好,今天A了四个题,都很水,memset的清零时间,需要好长,因为memset 跟cin超时了,它的数据量1e6,所以超时了还是多用scanf, ... 
- linux 进程管理和内存分配
			1.进程相关概念 进程:正在运行中的程序 内核功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等 Process:运行中的程序的一个副本,是被载入内存的一个指令集合 进程 ID(Pro ... 
- aws mysql 开启慢查询日志, 并利用mysqlsla 分析
			1.开启慢查询日志服务 (a) sql 查询配置 # 查看慢日志是否开启,开启为ON show variables like 'slow_query%'; show variables like 'l ... 
- turtle库应用实例2-六芒星的绘制
			六芒星的绘制  ... 
- P2762 太空飞行计划问题  网络流
			题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的 ... 
- CSS躬行记(10)——CSS方法论
			方法论是一个哲学术语,会对一系列具体的方法进行分析研究.系统总结并最终提出较为一般性的原则.CSS方法论是一种面向CSS.由个人和组织设计.已被诸多项目检验且公认有效的最佳实践.这些方法论都会涉及结构 ... 
- Cordova+vue   混合app开发(一)创建Cordova项目
			简介: Cordova包装你的HTML/JavaScript app到原生app容器中,可以让你访问每个平台设备的功能.这些功能通过统一的JavaScript API提供,让你轻松的编写一组代码运行在 ... 
