python + request实现multipart/form-data请求上传文件

1、multipart/form-data介绍

        multipart/form-data 是 HTTP 协议中用于上传文件的一种类型。它允许客户端向服务器发送文件以及一些额外的元数据(例如文件名、MIME 类型、图片等)。这种类型的请求不同于普通的application/x-www-form-urlencoded 格式,其中数据是在请求体中进行编码的。

2、实现方式

前提:需要下载 requests-toolbelt 模块,直接在pycharm模块库搜索下载即可,或者使用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、文件路径和文件名分开实现上传(美观一点)

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)    # 请求
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值