1. Introducción a multipart/form-data
multipart/form-data es un tipo utilizado en el protocolo HTTP para cargar archivos. Permite que un cliente envíe un archivo al servidor junto con algunos metadatos adicionales (como nombre de archivo, tipo MIME, imagen, etc.). Este tipo de solicitud difiere del formato normal application/x-www-form-urlencoded, donde los datos se codifican en el cuerpo de la solicitud.
2. Método de implementación
Premisa : necesita descargar el módulo Requests-Toolbelt, simplemente búsquelo y descárguelo directamente en la biblioteca del módulo pycharm, o use pip
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. La ruta del archivo y el nombre del archivo se cargan por separado (hermoso)
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) # 请求