python requests post 使用 multipart/form-data 上传文件方法
2023-06-13 09:17:24 时间
发生背景
使用 requests 的 post files 请求,发现服务端没法接受到文件,总提示请上传图片
接口分析
F12 分析请求结构,主要看接口类型、请求头、Payload。
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryO3dY4lwWKYZkUXxq
解决办法
使用 requests-toolbelt 库
import requests
from requests_toolbelt import MultipartEncoder
def upload_img(self, img_path, where):
"""
图片上传
:param img_path:
:param where:
:return:
"""
# https://requests.readthedocs.io/projects/cn/zh_CN/latest/user/quickstart.html#id4
api = urljoin(self.domain, "/backend/upload/image")
# image_open = open(img_path, 'rb')
img_name = os.path.basename(img_path)
img_open = open(img_path, 'rb')
img_mime = magic.from_file(img_path, mime=True)
# print(img_name, img_open, img_mime)
# 请求参数
data = MultipartEncoder(
fields={"type": where,
'image': (img_name, img_open, img_mime)}
)
# 构造请求头
self.headers["Content-Type"] = data.content_type
self.headers["Referer"] = "http://test.com/img/change"
res = requests.post(api, headers=self.headers, data=data)
if res.status_code == 200:
image_url = res.json().get("image")
print(image_url)
return image_url
else:
print(res.text)
return None
相关文章
- 快速入门Python机器学习(21)
- pycharm上传文件到服务器_python代码部署到服务器
- python上传文件方法总结
- python安装不了whl文件_Python安装whl文件过程图解
- python解压bz2文件命令,在Python中解压缩.bz2文件
- python文件操作步骤_python读取csv文件
- 【说站】python按行读取文件的方法比较
- Python文件名后缀_python获取目录下所有文件的文件名
- Python 文件上传:如何使用 multipart/form-data 编码和 requests 包
- 使用Python批量实现文件夹及其子文件夹下指定文件的复制
- Python Request POST 上传文件 Multipart/form-data
- python文件操作:r、w、a、r+、w+、a+和b模式
- python-Python与PostgreSQL数据库-使用Python执行PostgreSQL查询(二)
- python-Django-文件上传(三)
- 自定义Python版本ESL库访问FreeSWITCH
- python实现ftp上传文件详解编程语言
- Linux上的Python之旅(linux自带python)
- seek引发的python文件读写的问题详解编程语言
- 提升Linux环境:升级Python(linux升级python)
- python使用paramiko模块实现ssh远程登陆上传文件并执行