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

这篇具有很好参考价值的文章主要介绍了python + request实现multipart/form-data请求上传文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、multipart/form-data介绍

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

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [micropython k210] 基于 Socket 实现 MicroPython 的 HTTP 上传文件(multipart/form-data)

    下述内容需要具备 HTTP 的基础知识,如果不知道的可以过一遍 HTTP 协议详解 继上次在 K210 实现 HTTP Download 文件(https 也支持辣),现在就来说说直接基于 socket 的上传文件实现吧。 首先准备一个 Server 文件服务器的 CPython 代码,这个是再简单不过了。 可以看到实现处理了一个

    2024年02月08日
    浏览(50)
  • Java使用HttpClient以multipart/form-data向接口上传文件

    对接某公司的接口,涉及到资质上传等业务。需要对接他们的上传附件接口。 JDK1.8 httpclient 4.x 因为我方系统需要给前端提供上传接口 使用的 MultipartFile 来接收文件 所以这边需要MultipartFile转下File文件 一顿操作对接完事。肯定有朋友问 为什么不让前端兄弟直接对接呢。因为对

    2024年02月05日
    浏览(62)
  • 上传文件.HttpMediaTypeNotSupportedException:Content type ‘multipart/form-data;

    org.springframework.web.HttpMediaTypeNotSupportedException:Content type \\\'multipart/form-data;boundary=----WebKitFormBoundaryCkkfE9h3eXMf4Pw4;charset=UTF-8\\\' not supported controller方法入参问题所致 原本接口定义为 第二个参数有注解 @RequestBody,它是导致这个问题的关键!!! 解决:将@RequestBody去掉即可解决问题!再

    2024年02月14日
    浏览(58)
  • requests 库:发送 form-data 格式的 http 请求 (python)

    requests官方网站地址 requests_toolbelt Python自动化 requests 库:发送 form-data 格式的 http 请求 requests-toolbelt · PyPI

    2024年02月03日
    浏览(54)
  • python-用form-data形式上传文件请求

    虽然现在基本上都约定俗成的接口都用json形式请求 但是不可避免地 有些接口需要传文件流,此时就需要用form-data形式上传了 for.e: 存在以下接口,通过接口创建海报图 但需要上传缩略图, 此时接口的Content-Type就不能是application/json,而是multipart/form-data; 参数格式也是以表单

    2023年04月08日
    浏览(46)
  • 解锁新技能《springboot基于表单multipart/form-data的文件上传》

    springboot的文件上传有多种实现方案,个人比较推荐方案三通过实体类属性绑定的方式,这样可以方便文件及其关联的相关属性字段; 开源依赖pom 一、单个文件上传及其它属性字段 二、通过数组方式上传多个文件 三、通过实体类绑定方式上传文件及传递其它属性值 四、通过

    2024年02月13日
    浏览(58)
  • java发送form-data请求实现文件上传

    需要请求第三方接口上传文件,该请求类型是form-data请求   注意: 这里的 builder.addPart(\\\"sendfile\\\", new FileBody(file)); , multipartFile 对应form表单的字段名称。 参考:Java发送form-data请求实现文件上传_IceFloe_Rot的博客-CSDN博客

    2024年01月18日
    浏览(63)
  • 使用postman发送请求,提示Content type ‘multipart/form-data not supported

    1、原因:后端通过@RequestBody 的方式接收参数,不能通过form-data方式传参,每一个请求必须是通过实体对象进行传参,需要改为使用json传参

    2024年01月22日
    浏览(52)
  • 前端如何上传图片给后台?如何传递 multipart/form-data 类型的数据?图片大小、格式检查?

    图片上传需要传二进制流,请求头的 content-type 类型需为 multipart/form-data,传递的格式如下图所示 前后端交互通常为: 先调用接口上传二进制流图片 然后再上传表单其他内容(第一步通常会返回后台存储的图片id,第二步会将图片id传递给后台) 注:目前我只用过以上这种方

    2024年04月15日
    浏览(60)
  • SpringBoot:使用application/octet-stream 流式上传大文件,解决Mutipartfile multipart/form-data上传产生临时文件问题

    multipart的流不是HTTPRequest的流,而是服务器的临时文件流 multipart/form-data是表单上传,接口可以从Mutipartfile对象获取输入流getInputStream,表面上看没产生临时文件 org.springframework.web.multipart.support.StandardMultipartHttpServletRequest的getInputStream 这里面的流是从DiskFileItem(一眼磁盘)拿的

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包