什么是multipart/form-data请求

ASP.NET Web api接收multipart/form-data文件,解析MultipartFormDataStreamProvider文件保存过程 在ASP.NET Web api 中,接收multipart/form-data文件,我们可以使用MultipartFormDataStreamProvider来保存图片 [HttpPost,Route("api/Job/newJob")] public async Task<IHttpActionResult> PostNewJob() { ... 阅读详情

什么是multipart/form-data请求

根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢?这就要从头来说了。

http协议规定以ASCII码传输,建立在tcp,ip协议智商的引用规范,规范内容把http请求分成3个部分,状态行,请求头,请求体。所有的方法,实现都是围绕如何使用和组织这三部分来完成了,万变不离其宗,http的知识大家可以问度娘。

既然上面请求方式里面没有multipart/form-data那这个请求又是怎么回事呢,其实是一回事,multipart/form-data也是在post基础上演变而来的,具体如下:

1.multipart/form-data的基础方式是post,也就是说通过post组合方式来实现的。
2.multipart/form-data于post方法的不同之处在于请求头和请求体。
3.multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,其值也必须为multipart/form-data,同时还需要规定一个内容分割用于分割请求提中多个post的内容,如文件内容和文本内容是需要分隔开来的,不然接收方就无法解析和还原这个文件了,具体的头信息如下:

Content-Type: multipart/form-data; boundary=${bound}  

其中${bound} 是一个占位符,代表我们规定的分割符,可以自己任意规定,但为了避免和正常文本重复了,尽量要使用复杂一点的内容。如:--------------------56423498738365
4.multipart/form-data的请求体也是一个字符串,不过和post的请求提不同的是它的构造方式,post是简单的name=value键值连接,而multipart/form-data是添加了分隔符等内容的构造体,具体如下:

复制代码
--${bound}
Content-Disposition: form-data; name="Filename"

HTTP.pdf
--${bound}
Content-Disposition: form-data; name="file000"; filename="HTTP协议详解.pdf"
Content-Type: application/octet-stream

%PDF-1.5
file content
%%EOF

--${bound}
Content-Disposition: form-data; name="Upload"

Submit Query
--${bound}--
复制代码

其中${bound}是之前头信息中的分隔符,如果头信息中规定是123,那这里也要是123;可以很容易看到,这个请求提是多个相同部分组成的:每一部分都是以--加分隔符开始的,然后是该部分内容的描述信息,然后一个回车,然后是描述信息的具体内容;如果传送的内容是一个文件的话,那么还会包含文件名信息以及文件内容类型。上面第二部分是一个文件体的结构,最后以--分隔符--结尾,表示请求体结束。

可以知道要发送一个multipart/form-data的请求,其实任何支持post请求的工具或语言都可以支持,只是自己要稍微包装一下便可。

作者:Tyler Ning 
出处:http://www.cnblogs.com/tylerdonet/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

标签:  javascript
hutool的HttpRequest.post的使用-包括上传文档等多个传参【总结版本】 首先hutool已经为我们封装好了远程调用的接口,我们只要将对应的传参和方式对应填写即可。 阅读详情

相关推荐

java 发送 Content-Type 为 multipart/form-data 的post请求(RestTemplate, HttpClient, okhttp3)

okhttp2 引入pom依赖 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.0.0</version> </dependency> 代码示例 OkHttpClient.

call_me_back的博客 3032

用From-data传递文件和附加参数

详细赘述了通过from-data的方式上传需要附带参数的文件的方式

究极小白的博客 1590

Delphi7 multipart/form-data实现上传文件

使用indy自带的idhttp控件,用form表单(multipart/form-data)形式上传文件(图片,视频等)

理解 multipart/form-data 请求

根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢?这就要从头来说了。 http协议规定以ASCII码传输,建立在tcp,ip协议智商的引用规范,规范内容把http请求分成3个部分,状态行,请求头,请求体。所有的方法,实现都是围绕如何...

new Girl的博客 1万+

射频电路设计——射频器件基础

本文仅供自己复习使用,请勿转载! 射频电路制作方法 MCM工艺 CMOS工艺 趋肤效应、深度 频率越高趋肤效应越明显 高频器件 高频电阻 绕线的比贴片的多一个电感,是因为绕线的因为是线绕制的,只有有线就会有电感,所以绕线电阻等效模型会比贴片的多一个电感 多晶硅电阻模型 深线性区MOS电阻 高频电阻的频率响应 记忆的话就后面的频率特性有点像电容的 高频电容 作用 单层贴片式电容 多层贴片式电容 MIM电容 MOM电容 由于是并联的,所以总的电容值是单个的直接相加 PN结电容 M.

输出每日所学,供大家学习使用 7150

RK3568-Linux-麒麟系统---更新制作麒麟rootfs

RK3568 Linux系统 麒麟国产麒麟镜像

qiuzw2003的博客 5360

multipart/form-data格式的post请求

String url = "http://xxx"; Map<String, Object> params = new HashMap<>(); params.put("app_id", app_id); params.put("app_token", app_token); params.put("domain", domain); // 创建Httpclient对象...

lip86的专栏 2197

合宙ESP32C3实战:MPU6500六轴传感器数据读取与校准全解析

本文详细解析了如何使用合宙ESP32C3开发板读取和校准MPU6500六轴姿态传感器数据。从硬件接线、开发环境搭建到核心代码解析,提供了全面的实战指南,帮助开发者快速掌握传感器配置与数据处理技巧,适用于姿态控制、运动检测等应用场景。

weixin_27066963的博客 406

requests发送multipart/form-data请求

使用requests模块请求接口时,会遇到Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryQwiOKYyOtrkiQ1K3这个请求体的格式,我们可以借助第三方库MultipartEncoder进行处理 处理方式如下: 1:先安装MultipartEncoder: pip install requests_toolbelt 2:先用postman进行请求,确认是否请求的通(未带file文件) 3:使用代码实现 import r

Y_warmth 2542

PCB设计之ODB++文件格式详解

ODB++(Open Database++)是一种广泛应用于PCB(印制电路板)设计和制造领域的开放数据交换格式。它由Valor Computerized Systems(现为Siemens EDA的一部分)开发,旨在替代传统的Gerber文件格式,提供更完整、结构化的制造数据,从而优化PCB设计到生产的流程。ODB++通过结构化数据整合了PCB设计到制造的全流程信息,显著提高了生产效率和准确性。尽管存在一定的兼容性挑战,但其在复杂项目和高可靠性场景中的价值不可替代。

ZZcppc的博客 1万+

AUTOSAR系统服务篇 - BswM的使用

本文档是对4.0.3版及更高版本的AUTOSAR模式管理应用的介绍。其主要目的是为AUTOSAR的用户和开发人员提供基于示例的AUTOSAR模式管理不同方面的详细概述,这些示例在文中进行了解释。本文中的代码清单共同构成了示例ECU的配置。第2章解释了基础的模式管理概念,例如一般的模式、如何实现模式切换、模式管理者和模式用户的角色等。其次介绍了应用模式管理和基础软件模式管理的依赖关系,两者密切相关。基础软件模式管理器是AUTOSAR R4.0中的中央模式管理模块。它具有很高的可配置性。

IOT2017的博客 846

POST请求中的multipart/form-data

试图使用axios通过POST上传文件,后端一直拿不到参数,研究了下发现axios不直接支持multipart/form-data类型,后改用request模块实现。 本文同步发表在我的个人博客POST请求中的multipart/form-data 个人博客的评论系统加了邮件通知,有什么想和作者说的建议在个人博客留言哦 后续若有变化,将只在个人博客更新,恕此处不再修改 Content-Type是...

LLL优快云的博客 4066

基于Simulink的电机轴电压与轴电流抑制仿真

本文带你完成了电机轴电压与轴电流抑制的Simulink仿真,实现了:✅ 揭示了共模电压 → 寄生电容 → 轴电压 → 轴承电蚀的完整链路✅ 搭建了含寄生参数的高频电机等效模型共模电压最小化PWM(源头抑制)dv/dt滤波器(路径阻断)轴接地(终端泄放) ✅ 通过仿真验证了轴电压从68 V降至<3 V的显著效果 ✅ 为高可靠性电机系统提供低成本、高效益的轴承保护方案。

amy_mhd的博客 163

Http之HttpURLConnection-POST发送请求(multipart/form-data)

Http之HttpURLConnection-POST发送文件请求概述常见的Content-Type类型POST请求POST请求(文件+参数) 概述 本文章只编写http使用HttpURLConnection发送post请求,包括两方面 1、普通post请求() 2、带有参数和文件的post请求 常见的Content-Type类型 1、application/x-www-form-urlencoded 最常见的 POST 提交数据的方式,原生Form表单,默认为application/x-www-form-

qq_16957817的博客 1万+

SMPLify-x-master | 复现记录

由于毕业设计中将会用到smpl模型,而smplify方法的各环境依赖版本比较老,复现不太容易,因此便进行了smplifyx方法使用smplx的方法。由于在过程中遇到较多坑,因此进行记录和分享。

qq_44916003的博客 5100

【学习系列】SAP RAP 8:行为定义-Authorization Control

本文介绍了SAP RAP中的授权控制实现方法,主要分为读取操作和修改操作两种场景。读取操作通过ABAP CDS的数据控制语言(DCL)实现,使用访问控制对象限制数据可见范围;修改操作则通过行为定义中的权限检查,包括全局授权、实例授权和预检查三种方式。文章详细说明了如何使用DCL创建访问控制规则,并通过实例演示了全局授权和实例授权的代码实现方法,以及预检查功能在数据更新前的权限验证。这些授权控制机制共同确保用户只能访问和操作其权限范围内的数据,有效保障系统安全性。

DeveloperMrMeng的博客 436

HTTP协议之multipart/form-data请求分析

首先来了解什么是multipart/form-data请求: 根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢?这就要从头来说了。 http协议大家都知道是规定了以ASCII码传输,建立在tcp、ip协议之上的应用层规范,规范内容把h...

Quino季诺的博客 857

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SpringMVC 处理 multipart/form-data 请求

用 postman 做测试时,发现用 multipart/form-data 的格式发送请求,要么是接收不到数据,要么就是 415 错误。 出现这些问题通常是因为没有配置好 Multipart resolver 引起的。 SpringMVC 的 Multipart resolver 有两种实现 基于 Apache Commons FileUpload 基于 Servlet 3.0 的 mu...

zsensei的博客 4715

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Nodejs发送multipart/form-data请求

Nodejs发送multipart/form-data请求,上传文件 var FormData = require('form-data'); var fs = require('fs'); var http = require('http'); var form = new FormData(); form.append('file', fs.creat...

程序员的点滴 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

multipart-form/data表单类型请求处理方法

# coding=utf-8 import requests,json from urllib3 import encode_multipart_formdata # r = requests.get("https://xxxxx/api/v2/channel/get-userid-list?channel_id=ch_7da707b2&curr_page=1&page_si...

Mr_Deng_的博客 2082

form-data/multipart请求

1、form-data: 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息; 由于有boundary隔离,所以multipart/form-data既可以上传文件,也...

萝卜&青菜的博客 1538

爬虫小记:POST请求之 multipart/form-data 类型

某次开发时发现模拟一个 post 请求不下来数据,然后发现 Content-Type 是 multipart/form-data; boundary=----WebKitFormBoundaryEeshAWrJZZFlx0QB 类型的不同于以前常用的的 text/plain 和 application/x-www-form-urlencoded 因此记录下。 1.Content-Type类型 Content-Type 解释为请求的与实体对应的MIME信息,作用是指定处理请求的提交内容类型 ,比如文本格.

qq_38967004的博客 3402
上一篇: ajaxFileUpload 异步上传文件简单使用
下一篇: Servlet上传文件详细解析以及注意事项
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值