前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python requests post 使用 multipart/form-data 上传文件方法

python requests post 使用 multipart/form-data 上传文件方法

作者头像
卓越笔记
发布于 2023-03-11 01:27:35
发布于 2023-03-11 01:27:35
3.3K00
代码可运行
举报
文章被收录于专栏:卓越笔记卓越笔记
运行总次数:0
代码可运行

发生背景

使用 requests 的 post files 请求,发现服务端没法接受到文件,总提示请上传图片

接口分析

F12 分析请求结构,主要看接口类型、请求头、Payload。

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryO3dY4lwWKYZkUXxq

解决办法

使用 requests-toolbelt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests

from requests_toolbelt import MultipartEncoder



def upload_img(self, img_path, where):
    """
    图片上传
    :param img_path:
    :param where:
    :return:
    """
    # https://requests.readthedocs.io/projects/cn/zh_CN/latest/user/quickstart.html#id4
    api = urljoin(self.domain, "/backend/upload/image")
    # image_open = open(img_path, 'rb')
    img_name = os.path.basename(img_path)
    img_open = open(img_path, 'rb')
    img_mime = magic.from_file(img_path, mime=True)
    # print(img_name, img_open, img_mime)
    # 请求参数
    data = MultipartEncoder(
        fields={"type": where,
                'image': (img_name, img_open, img_mime)}
    )
    # 构造请求头
    self.headers["Content-Type"] = data.content_type
    self.headers["Referer"] = "http://test.com/img/change"

    res = requests.post(api, headers=self.headers, data=data)
    if res.status_code == 200:
        image_url = res.json().get("image")
        print(image_url)
        return image_url
    else:
        print(res.text)
        return None
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-3-10 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python Request POST 上传文件 Multipart/form-data
最后在分享一个web开发的技术网站,详细的介绍了请求头的各种参数:web开发技术网站 手机app抓包工具推荐:小黄鸟(HTTPCanary)
EXI-小洲
2022/12/13
2.6K0
Python Request POST 上传文件 Multipart/form-data
python接口自动化18-requests-toolbelt处理multipart/form-data
一、requests-toolbelt 1.官方文档地址:[requests-toolbelt官方文档](https://pypi.python.org/pypi/requests-toolbelt/) 2.环境安装 > pip install requests-toolbelt 二、multipart/form-data传文件 ``` from requests_toolbelt import MultipartEncoder import requests m = MultipartEncoder(
企鹅号小编
2018/03/02
4.1K0
python接口自动化18-requests-toolbelt处理multipart/form-data
python3+requests:pos
前言:post请求我在python接口自动化2-发送post请求详解(二)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等,可以参考Get,Post请求方式经典详解进行学习一下。
py3study
2020/01/13
2.1K0
Python解析multipart boundary:aiohttp与requests文件上传详解
在Web开发中,处理文件上传或复杂表单数据时,经常需要使用multipart/form-data格式,而其中的boundary参数则是区分各部分数据的重要分隔符。本文将深入介绍boundary的概念,并针对Python中两个常用的HTTP请求库——aiohttp和requests,分别展示自动与手动构建boundary的方式。最后,通过详细的对比,帮助你理解各自的优缺点,从而选择适合的解决方案。
不止于python
2025/03/17
2580
Python解析multipart boundary:aiohttp与requests文件上传详解
Python Requests Post for 5 Styles
最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype属性,那么最终就会以 application/x-www-form-urlencoded方式提交数据。请求类似于下面这样:
happy123.me
2019/12/30
6420
用Python请求接口的正确姿势是啥
您好,我是码农飞哥,感谢您阅读本文!本文主要介绍Python中如何请求外部接口以及如何通过Flask框架定义接口。
码农飞哥
2021/08/18
1.1K0
python接口自动化(十)--post请求四种传送正文方式(详解)
  post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等。我们要知道post请求四种传送正文方式首先需要先了解一下常见的四种编码方式:
北京-宏哥
2019/09/11
3.7K0
python接口自动化(十)--post请求四种传送正文方式(详解)
Serverless 文件上传优化
前言 当开发者需要搭建一个 Web 应用或移动端程序时,可以使用云函数作为后端服务,由 API 网关接收客户端请求,并触发云函数处理。这样的 Serverless 架构具备简单便捷、可弹性扩展、高可用等优势,正成为越来越多人的共同选择。 但开发者在搭建应用时,难免会遇到上传文件的场景,如 App 上传用户头像、个人博客文章图片、网站评论图片,这些都需要上传文件到后端。如果您的业务托管在主机上,上传文件往往不受限制,可使用 multipart/form-data 方式直接上传文件;但在 Serverless
腾讯云serverless团队
2021/02/02
7750
pytest+requests+allure实现接口自动化测试系列(6)-重新封装requests
上一篇测试数据的结构增加了headers,对于headers处理,主要区别Content-Type的处理。比较常见的是Content-Type:application/json和Content-Type:multipart/form-data这两种。这次封装的改动主要是针对后者。
搁浅同学
2022/07/21
5610
pytest+requests+allure实现接口自动化测试系列(6)-重新封装requests
新版知乎登录之post请求
前言 在上一篇文章中给大家讲解了requests发送post请求的几种方式,并分析了一些使用陷阱。 疑惑 在文章发表之后,有朋友给我留言说,知乎登录就没有使用提交Form表单(application/x-www-form-urlencoded)的方式,而是上传文件(multipart/form-data),这是为什么呢?知乎登录post请求该怎么发送呢? 本质 我想说的是一般情况下是使用提交Form表单的方式进行登录,但是不排除其他的方式。大家要透过现象看本质,登录验证的本质上是客户端发送验证消息,服务端
七夜安全博客
2018/06/26
1.5K0
Python+Requests multipart/form-data实现图片、附件上传实例
r = requests.post(url, data, files=files)
王大力测试进阶之路
2019/10/25
9.9K0
Python+Requests multipart/form-data实现图片、附件上传实例
Python 文件上传:如何使用 multipart/form-data 编码和 requests 包
在许多应用程序中,将文件上传到网站服务器是一个常见任务。然而,在 Python 中实现它可能很有挑战性。因为 Python 标准库没有提供创建 multipart/form-data 编码类型请求的内置方法。这种编码类型允许发送二进制数据和其他表单字段。
jackcode
2023/02/27
2.7K0
Python 调用接口进行文件上传的踩坑记录
postman 接口调用 urllib3 的方式 def upload_bak(content): """from urllib3 import encode_multipart_formdata""" filename = '测试报告6.png' url = HOST + "/api/v1/objectStore/bucket/bug/object" headers = HEADERS files = {'file': (filename, content),
Hopetree
2022/09/26
5140
Python 调用接口进行文件上传的踩坑记录
httprunner学习25-文件上传multipart/form-data
httprunner上传文件接口,其实跟requests上传文件的接口是一样的,之前在python接口系列里面有案例 python接口自动化16-multipart/form-data上传图片
上海-悠悠
2019/11/15
2.9K0
熟悉POST提交数据的4种方式,接口测试更高效
Hi,大家好。我们都知道POST一般用于向服务端提交数据,POST提交数据的 4 种格式即Content-Type的4种形式,尤其注意每种格式中http发送请求时body中数据的格式。4种形式分别是:
可可的测试小栈
2021/12/10
2.1K0
熟悉POST提交数据的4种方式,接口测试更高效
httprunner 3.x学习14 - 上传文件(upload)
requests 库里面上传文件会用到 requests_toolbelt, 可以很方便的解决 multipart/form-data 类型的文件上传相关接口。 HttpRunner3.x 集成了 requests_toolbelt,可以使用内置 upload 关键字来上传文件相关操作。 相关环境:
上海-悠悠
2021/06/24
1.1K0
httprunner 3.x学习14 - 上传文件(upload)
python request 发送for
# !/usr/bin/env python # -*- coding: utf-8 -*- import sys reload(sys) sys.path.append('./python2.7/site-packages') sys.path.append('./python2.7/site-packages/requests_toolbelt-0.8.0-py2.7.egg') print sys.path import urllib2 import urllib import cookielib i
py3study
2020/01/08
6520
知乎模拟登陆
经常在简书上写作,写完后再发布到其他网站,非常麻烦,所以准备搞一下自动发布文章的工具。那么第一步先要模拟登陆几个网站。今天先从知乎开始。
星星在线
2018/08/21
2.2K0
知乎模拟登陆
python接口自动化16-multipart/form-data上传多个附件
前言 reuqests上传一张图片到服务器,前面已经介绍过了,那么如何在提交BUG的时候,上传附件呢? 上传附件的时候,文件的name参数名称是一样的,python里面key是不可以重复的,又如何处理
企鹅号小编
2018/01/02
1.4K0
python接口自动化16-multipart/form-data上传多个附件
python接口自动化14-multipart/form-data上传图片
前言 在提交表单操作的时候,经常会遇到图片上传的操作,图片上传是一个单独的接口,本篇以禅道为例,介绍如何上传图片 一、上传接口 1.以禅道上提交bug为例,在选择图片时,点确定按钮,就是上传图片了
上海-悠悠
2018/04/08
2.3K0
python接口自动化14-multipart/form-data上传图片
推荐阅读
相关推荐
Python Request POST 上传文件 Multipart/form-data
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验