Python Request POST 上传文件 Multipart/form-data

简介: Python Request POST 上传文件 Multipart/form-data

项目场景:

我的第一个博客:使用python request模块向服务器接口上传图片

问题描述

某app上传图片接口的包

某app上传图片接口的包

原因分析:

问题的关键词:请求头 Content-Type:multipart/form-data
1、常用的情况下提交数据,都是通过request.post以表单的形式向服务器提交数据的,但是根据抓包携带的请求头信息这个格式不是键值对的形式
2、根据关键词搜索了解到该请求格式为RFC1867协议,不是以表单方式提交
3、这里提一下,上传文件常用的都是将需要上传的文件以二进制形式读入内存,有些时候根据不同的场景会将文件二进制内容进行加密,再把内容跟随一些参数一起提交至服务器中,

解决方案:

1、关于RFC1867协议的概念介绍链接:RFC1867协议说明
2、关于app文件上传接口请求体格式的介绍说明请参考这个链接:Multipart/form-data POST文件上传详解
3、继续推荐:request文件上传
4、关于使用request上传文件我推荐两种方式参考链接:两种方式
5、补充:我是用第二种方式上传成功的,对于第二种方式写个注意事项
需要引用模块:requests_toolbelt
安装:pip install requests_toolbelt -i https://pypi.tuna.tsinghua.edu.cn/simple

import base64
from requests import session
from requests_toolbelt import MultipartEncoder
sessions = session()
with open(file=file_path, mode='rb') as fis:
    file_content = fis  # base64.b64encode().decode() 有些需要编码
    files = {
        'filename': filename,
        'Content-Disposition': 'form-data;',
        'Content-Type': 'image/jpeg',
        'file': (filename, file_content, 'image/jpeg')  
    }
    form_data = MultipartEncoder(files)  # 格式转换
    sessions.headers['Content-Type'] = form_data.content_type
    response = sessions.post(url=upload_img_url, data=form_data)
注释:需要注意上传文件接口的参数,name的值,filename,Content-Type,格式: file={ 'name的值': ("filename", "文件对象", '内容类型'), ...... } 参数说明
最后在分享一个web开发的技术网站,详细的介绍了请求头的各种参数: web开发技术网站
手机app抓包工具推荐:小黄鸟(HTTPCanary)
目录
相关文章
|
7月前
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
238 13
|
7月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
311 69
|
5月前
|
JSON 数据格式 Python
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
116 10
|
5月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
144 9
|
JSON API 数据格式
使用Python发送包含复杂JSON结构的POST请求
使用Python发送包含复杂JSON结构的POST请求
|
开发者 Python
Python POST 请求超时配置
Python POST 请求超时配置
207 1
Python3.x常用时间的处理方法 和urlopen处理post请求,传值data 原创
Python3.x常用时间的处理方法和urlopen处理post请求,传值data 原创
97 0
|
API Python
python flask 提供web的get/post开发
python flask 提供web的get/post开发
169 0
|
机器人 API Python
Python 技术篇-用request库调用莉莉机器人api接口实现与机器人对话实例演示
Python 技术篇-用request库调用莉莉机器人api接口实现与机器人对话实例演示
289 0
Python 技术篇-用request库调用莉莉机器人api接口实现与机器人对话实例演示
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
208 102

推荐镜像

更多
下一篇
开通oss服务