发送http请求时,以form-data的格式作为requests的参数

1、使用requests的requests_toolbelt模块 ,需要自行安装。

pip3 install requests-toolbelt

from requests_toolbelt import MultipartEncoder
import requestsm = MultipartEncoder(fields={'field0': 'value','field1': 'value','field2': ('文件名称', open('文件地址/file.py', 'rb'), 'text/plain')})r = requests.post('http://httpbin.org/post',data=m,headers={'Content-Type': m.content_type})

请注意,必须在请求头中设置Content-Type为encoder.content_type,以确保服务器能
够正确解析请求。

import requests
from requests_toolbelt import MultipartEncoderurl = "https://order-xxxxx/api/admin/file/upload.htm"
params = {"wenaho": 1}m = MultipartEncoder(fields={'voucher': (open('img/23.jpg', 'rb'), 'image/jpeg')})response = requests.post(url, params=params, data=m, headers={'Content-Type': m.content_type})print(response.text)

方法二:

在 requests 中,使用 files 参数上传文件时,其格式应该是一个字典,其中键表示字段名,值是包含文件数据的元组。每个元组通常包含两个或三个元素:文件名、文件对象以及可选的 MIME 类型。

下面是一个示例:

files = { 'file_field_name': ('filename', open('path_to_file', 'rb'), 'media_type') }

  • 'file_field_name' 是要发送文件的字段名。
  • ('filename', open('path_to_file', 'rb'), 'media_type') 是一个元组,其中:
    • 'filename' 是文件名。 'filename' 文件名不能缺少,新版 requests库会报错
    • open('path_to_file', 'rb') 是打开并读取文件的文件对象。
    • 'media_type' 是文件的 MIME 类型(可选)。

请根据你具体的场景和需求,将这些值替换为你实际使用的字段名、文件名、文件对象和 MIME 类型。

import requestsheaders = {'x-sso-token': "9670b80",'user-agent': 'Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Mobile Safari/537.36',}# 上传图片
params = {'wenaho': '1',}
with open('img/23.jpg', 'rb') as file:file_stream = file.read()   #    file_stream 表示一个 <class 'bytes'> 类型的对象print(open('img/23.jpg', 'rb'))  # <_io.BufferedReader name='img/23.jpg'>files = {# 'bucket': (None, 'exam-room'),# 'type': (None, 'image'),'voucher': ('23.jpg',open('img/23.jpg', 'rb'), 'image/jpeg'),  # 不能使用file_stream 会报错}res = requests.post('https://ordeXXX.cn/api/admin/file/upload.htm',params=params,headers=headers,files=files)
print("上传图片后单响应内容:")
print(res.json())# 提取售后单号
imgKeyList = jsonpath.jsonpath(res.json(), "$..encodedData")[0]print(imgKeyList)

 执行结果:

D:\MC\venv\Scripts\python.exe D:/MC/test01.py
<_io.BufferedReader name='img/23.jpg'>
上传图片后单响应内容:
{'data': {'encodedData': 'dXADAAAAMgAAAAAAD3Q8.AQAYYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtAHhBZjRDL3dBQUFBQUFBQUFDWm1sc1pYTXZRVEl6TVRFMU5qVXpRVGc1Umk4eU1ESTBMekExTHpJMEx6UXlMekV3TVRJM09UWXZZamxoTXpNek5UazNNRGxoTkdObU9EazBaalJtTjJGak5XSmtOV1ppTXpjdVltbHU', 'previewUrl': None}, 'errorCode': 0, 'message': None, 'success': True}
dXADAAAAMgAAAAAAD3Q8.AQAYYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtAHhBZjRDL3dBQUFBQUFBQUFDWm1sc1pYTXZRVEl6TVRFMU5qVXpRVGc1Umk4eU1ESTBMekExTHpJMEx6UXlMekV3TVRJM09UWXZZamxoTXpNek5UazNNRGxoTkdObU9EazBaalJtTjJGak5XSmtOV1ppTXpjdVltbHUProcess finished with exit code 0

<_io.BufferedReader name='img/23.jpg'><class 'bytes'> 是两种不同的对象,它们的区别如下:

  • <_io.BufferedReader name='img/23.jpg'> 表示一个文件对象,通过 Python 的 io 模块打开了一个名为 'img/23.jpg' 的文件。这个对象允许你以文件流(stream)的形式来读取文件的内容,并且保留了文件的元数据(例如文件名、文件路径等)。你可以使用这个文件对象来进行文件读取操作,也可以将它传递给其他需要文件对象作为参数的函数。

  • <class 'bytes'> 表示一个 bytes 类型的对象,是 Python 中用于表示二进制数据的一种数据类型。它包含了一系列的字节(byte),常用于处理文件内容、网络数据传输、加密算法等场景。你可以对 bytes 对象进行切片、拼接、编码解码等操作。

因此,<_io.BufferedReader name='img/23.jpg'> 是一个文件对象,而 <class 'bytes'> 是表示二进制数据的对象,两者在概念上和用途上有所不同。前者适用于文件的 I/O 操作,后者适用于处理二进制数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cmake编译redis6.0源码总结

1配置clion使用cygwin模拟linux环境&#xff0c;先下载cygwin后配置 2导入源码&#xff0c;配置cmake文件 由于redis是基于Linux上的Makefile&#xff0c;所以Windows上需要配置CMakeLists.txt使用cmake工具编译运行。github上已经有人尝试编写CMakeLists.txt文件&#xff0c…

MCF-Microbial Cell Factories

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 Microbial Cell Factories 是一份开放的同行评审期刊&#xff0c;涵盖了与微生物细胞作为重组蛋白和天然产物的生产者或作为工业兴趣的生物转化的催化剂的开发、使用和研究相关的任何主题…

《Electron实战:入门、进阶与性能优化》目录汇总

前言 很早之前想学习的技术了&#xff0c;主要是可以用框架优化界面&#xff0c;嘿嘿(▽) 目录 认识Electron轻松入门主进程和渲染进程引入现代前端框架窗口界面数据系统通信硬件跳槽从安全发布自媒体内部发布工具 后记 持续更新

【学习笔记】Windows GDI绘图(四)矩阵Matrix详解

矩阵Matrix 基于矩阵在GDI绘图的重要性&#xff0c;所以想深入了学习矩阵的相关属性与方法。 先上个本文中所有的函数图例演示吧。 原型&#xff1a; namespace System.Drawing.Drawing2D;public sealed unsafe class Matrix : MarshalByRefObject, IDisposableMatrix类封装…

系统架构师-考试-基础题-错题集锦2

108.总线-全双工、半双工&#xff1a; 109.软件配置管理-产品配置&#xff1a; 产品配置&#xff1a;指一个产品在其生命周期各个阶段所产生的各种形式和各种版本的文档、计算机程序、部件及数据的集合。 注意&#xff1a;选项中的需求规格说明、设计说明等均可归属于文档。 …

Netty学习02----使用多线程优化Selector

背景前置 在单线程环境下&#xff0c;使用一个线程同时绑定多个事件&#xff1a;连接事件、读事件、写事件。不能充分发挥多核CPU的优势&#xff0c;考虑使用多个线程&#xff0c;每个线程专门负责处理不同的事件&#xff0c;如下图所示&#xff1a;一个线程专门负责连接&#…

“在线全文”“在线发表”的区别

在线全文&#xff1a;在网上可以看到全文,&#xff08;但不一定能检索到&#xff0c;有的时候&#xff0c;文章在网上可以搜到全文&#xff0c;但是不能被WOS期刊收录&#xff0c;不能出具检索证明&#xff09; 在线发表&#xff1a;在线发表一般是能检索到的。

【ARK Survival Evolved】方舟:生存进化一键使用服务器开服联机教程

1、进入控制面板 2、第一次购买服务器会安装游戏端&#xff0c;大约5分钟左右&#xff0c;如果长时间处于安装状态请联系客服 3、设置游戏端口 方舟生存进化的设置需要三个端口&#xff0c;它们用于游戏端口&#xff08;必须为首选端口&#xff09;&#xff0c;查询端口&#…

uniapp中使用mockjs模拟接口测试总结(swiper轮播图示例)

完整总结下在uni-app中如何使用Mock.js模拟接口测试&#xff0c;这在后台接口未就绪的情况下非常有用。同时也给出个首页swiper轮播图的mock接口使用。网上的文章都不太完整&#xff0c;这里总结下完整的使用示例&#xff0c;同时也支持h5和小程序平台&#xff0c;分享给需要的…

webpack5 splitChunks分割代码

首先明确webpack 自身的打包行为 当splitChunks为false时&#xff0c;此时不启用任何打包设置 可以看到&#xff0c;静态引入全都打到一个chunk里&#xff0c;动态引入会拆分出来一个chunk,这是纯webpack无配置的打包&#xff0c; webpack会给每个模块打上标记 ,如下 { m…

Python使用multiprocessing实现多进程

大家好&#xff0c;当我们工作中涉及到处理大量数据、并行计算或并发任务时&#xff0c;Python的multiprocessing模块是一个强大而实用的工具。通过它&#xff0c;我们可以轻松地利用多核处理器的优势&#xff0c;将任务分配给多个进程并同时执行&#xff0c;从而提高程序的性能…

基于transformers框架实践Bert系列3-单选题

本系列用于Bert模型实践实际场景&#xff0c;分别包括分类器、命名实体识别、选择题、文本摘要等等。&#xff08;关于Bert的结构和详细这里就不做讲解&#xff0c;但了解Bert的基本结构是做实践的基础&#xff0c;因此看本系列之前&#xff0c;最好了解一下transformers和Bert…

【MySQL】窗口函数实现滑动平均计算,数据清洗缺失值填补均值

路过了学校花店 荒野到海边 有一种浪漫的爱 是浪费时间 徘徊到繁华世界 才发现你背影 平凡得特别 绕过了城外边界 还是没告别 爱错过了太久 反而错得完美无缺 幸福兜了一个圈 &#x1f3b5; 林宥嘉《兜圈》 在数据分析和处理过程中&#xff0c;常常需要对一系列时间序列数据进行…

【JavaEE】加法计算器与用户登录实战演练

目录 综合练习加法计算器1. 准备工作2. 约定前后端交互接口3. 服务器代码 用户登录1. 准备工作2. 约定前后端交互接口3. 服务器代码4. 调整前端页面代码 综合练习 理解前后端交互过程接⼝传参, 数据返回, 以及⻚⾯展⽰ 加法计算器 需求: 输⼊两个整数, 点击"点击相加&q…

56. UE5 RPG 给敌人添加AI实现跟随玩家

在这一篇里&#xff0c;我们要实现一下敌人的AI&#xff0c;敌人也需要一系列的行为&#xff0c;比如朝向英雄攻击&#xff0c;移动&#xff0c;在满足条件时施放技能。这些敌人的行为可以通过使用UE的内置的AI系统去实现。 在UE里&#xff0c;只要是基于Character类创建的蓝图…

安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)

大家都知道&#xff0c;安卓每次更新都会给权限划分的更细、收的更紧。   早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录&#xff0c;没有之前安卓11授权的图了&#xff0c;反正都长一个样&#xff0c;就直接贴新图了。   后面到了安卓12~13的…

AWS安全性身份和合规性之IAM Identity Center(AWS Single Sign-On)

AWS IAM Identity Center&#xff0c;又称为AWS Single Sign-On&#xff08;SSO&#xff09;&#xff0c;是一项AWS托管的身份验证服务&#xff0c;用于集中管理多个AWS账户和SaaS应用程序的用户身份验证和授权。 单点登录&#xff08;SSO&#xff09;是一种身份验证解决方案&…

SQL Server 基础学习笔记

## SQL Server 基础学习笔记 ### 1. SQL Server 概述 SQL Server 是 Microsoft 开发的关系数据库管理系统&#xff08;RDBMS&#xff09;。它支持 SQL 语言&#xff0c;并提供了数据存储、查询、更新和管理等功能。 ### 2. 安装与配置 - **下载与安装**&#xff1a;从 Micros…

C/C++常用错误 or 规范注意

目录 前言1、是否可以强转 前言 之前做过关于python报错集&#xff08;未来如果出现一些有意义的错误还是会继续更新的&#xff09;&#xff0c;今天记录一下C/C的一些常见错误&#xff08;可能其实不算error&#xff0c;只是根据规范&#xff0c;尽量提升代码质量&#xff09…

信息系统项目管理师0128:输出(8项目整合管理—8.6管理项目知识—8.6.3输出)

点击查看专栏目录 文章目录 8.6.3 输出 8.6.3 输出 经验教训登记册 经验教训登记册可以包含执行情况的类别和详细的描述&#xff0c;还可包括与执行情况相关的影响、建议和行动方案。经验教训登记册可以记录遇到的挑战、问题、意识到的风险和机会以及其他适用的内容。经验教训…