1、multipart/form-data介绍
multipart/form-data 是 HTTP 协议中用于上传文件的一种类型。它允许客户端向服务器发送文件以及一些额外的元数据(例如文件名、MIME 类型、图片等)。这种类型的请求不同于普通的application/x-www-form-urlencoded 格式,其中数据是在请求体中进行编码的。文章来源:https://www.toymoban.com/news/detail-512868.html
2、实现方式
前提:需要下载 requests-toolbelt 模块,直接在pycharm模块库搜索下载即可,或者使用pip文章来源地址https://www.toymoban.com/news/detail-512868.html
import requests
from requests_toolbelt import MultipartEncoder
header = {} # 请求头
file_path = r"E:\data\test.jpg" # 文件绝对路径
with open(file=file_path, mode='rb') as fis:
file_content = fis
files = {
'filename': file_path,
'Content-Disposition': 'form-data;',
'Content-Type': 'image/jpeg',
'file': (file_path, file_content, 'image/jpeg')
}
form_data = MultipartEncoder(files) # 格式转换
header['content-type'] = form_data.content_type
r = requests.post(url, data=form_data, headers=header) # 请求
3、文件路径和文件名分开实现上传(美观一点)
import os
import requests
from requests_toolbelt import MultipartEncoder
filename = test.jpg # 文件名,文件放在data目录下
header = {} # 请求头
BASE_PATH = os.path.dirname(__file__) # 当前工作路径
file_path = BASE_PATH + os.sep + "data" + os.sep # 文件绝对路径
with open(file=file_path + filename, mode='rb') as fis:
file_content = fis
files = {
'filename': file_path + filename,
'Content-Disposition': 'form-data;',
'Content-Type': 'image/jpeg',
'file': (filename, file_content, 'image/jpeg')
}
form_data = MultipartEncoder(files) # 格式转换
header['content-type'] = form_data.content_type
r = requests.post(url, data=form_data, headers=header) # 请求
到了这里,关于python + request实现multipart/form-data请求上传文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!