python 文件上传模块 MultipartEncoder

本贴最后更新于 938 天前,其中的信息可能已经时移世异

一、下载第三方包

pip install requests_toolbelt

二、模块调用

from requests_toolbelt import MultipartEncoder

三、准备参数、处理请求头、发送请求

以我个人的项目为例:

  1. boundary需要生成 '----WebKitFormBoundaryPH6ZaA4wuABDm9BK'格式
  2. 文件上传入参存在多个字段

代码如下:

import random import string import requests from requests_toolbelt import MultipartEncoder def __handle_file_data(self, data, url): # 定义文件名称 filename = f"autotest_{self.fk.random_int(min=10000, max=99999)}.xlsx" # 生成boundary boundary = '----WebKitFormBoundary' + ''.join(random.sample(string.ascii_letters + string.digits, 16)) # 读取二进制文件 with open(file="文件路径", mode="rb") as file: excel = file.read() """ 1 删除data中的file字段 2 单独生成file的键值 3 将file_data与data拼接在一起,生成新的data """ del data['file'] file_data = {"file": (filename, excel, "application/vnd.ms-excel")} file_data.update(data) # 将入参处理成文件上传模块需要的格式,其中file的值为元祖格式,元祖中第一个参数为文件名(可自定义),第二个参数是二进制文件,第三个参数为文件格式 new_data = MultipartEncoder(fields=file_data, boundary=boundary) # 设置文件上传专用请求头 self.headers["Content-Type"] = new_data.content_type # 发送请求 response = requests.request(method=method, url=url, data=data, headers=self.headers, **kwargs) return response
回帖
请输入回帖内容 ...