post表单数据格式完全解析multipart/form-data

参数说明

内容

boundary

boundary一个字符串,用以分隔不同的参数;

string boundary = Guid.NewGuid().ToString();

会生成如下字符串:9470b619-f08f-436e-a6b2-98fcb02b695b

也可以自定义一个比较复杂的字符串作为分隔符,例如@adsadsadsads123456789@

request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;

--boundary开始分隔符,也就是boundary之前加两个短划线,用以标记每一条数据的起始位置;

--boundary--结束分隔符,也就是boundary之前和之后各加两个短划线,用以标记所有数据的结束位置;

\r\n

换行符\r\n,用以标记分隔符和参数声明之间、各参数声明之间、参数声明和参数值之间、参数值和下一条数据之间的分隔位置;

boundary和数据声明之间有且只有1个换行符;

各条数据声明之间有且只有1个换行符;

数据声明和数据值之间有且只有2个换行符;

数据值和下一条数据之间有且只有1个换行符;

其他参数

CContent-Type:text/plain;charset=utf-8表示数据内容的格式为普通文本,编码格式为utf-8;

Content-Disposition:form-data表示内容的处置方式,表示将内容作为formdata格式进行处理;

name=\"sInputF\"表示传递参数的名称,或者叫键值、或者字段名称;

所有数据,无论是文本数据还是文件流数据,最终都以byte[]的格式进行传输;

示例

--boundary //第一条数据

数据声明1

数据声明2

数据

--boundary//第二条数据

数据声明1

数据声明2

数据

...

--boundary--//数据结束

结构详解

参数

项目

内容

开始

换行符

第一个开始分隔符前可以没有换行符\r\n

参数1

sInputF

文件参数

开始分隔符

"--" + boundary

换行符

有且只有1个换行符\r\n

数据声明1:

Content-Disposition:form-data;name=\"sInputF\";filename=\"{Path.GetFileName(mDocPath)}\"

换行符

有且只有1个换行符\r\n

数据声明2:

Content-Type:application/octet-stream

换行符

声明和数据值之间,有且只有2个换行符\r\n\r\n

数据值

byte[] docFileBytes = ReadFileBytes(mDocPath);

换行符

有且只有1个换行符\r\n

参数2

sSealF

文件参数

开始分隔符

"--" + boundary

换行符

有且只有1个换行符\r\n

数据声明1:

Content-Disposition:form-data;name=\"sSealF\";filename=\"{Path.GetFileName(mSealPath)}\"

换行符

有且只有1个换行符\r\n

数据声明2:

Content-Type:application/octet-stream

换行符

声明和数据值之间,有且只有2个换行符\r\n\r\n

数据值

byte[] sealFileBytes = ReadFileBytes(mSealPath);

换行符

有且只有1个换行符\r\n

参数3

sPageNum

文本参数

开始分隔符

"--" + boundary

换行符

有且只有1个换行符\r\n

数据声明1:

CContent-Type:text/plain;charset=utf-8

换行符

有且只有1个换行符\r\n

数据声明2:

Content-Disposition:form-data;name=\"sPageNum\"

换行符

声明和数据值之间,有且只有2个换行符\r\n\r\n

数据值

1

换行符

有且只有1个换行符\r\n

参数4

fSealW

文本参数

开始分隔符

"--" + boundary

换行符

有且只有1个换行符\r\n

数据声明1:

CContent-Type:text/plain;charset=utf-8

换行符

有且只有1个换行符\r\n

数据声明2:

Content-Disposition:form-data;name=\"fSealW\"

换行符

声明和数据值之间,有且只有2个换行符\r\n\r\n

数据值

100

换行符

有且只有1个换行符\r\n

参数5

fSealH

文本参数

开始分隔符

"--" + boundary

换行符

有且只有1个换行符\r\n

数据声明1:

CContent-Type:text/plain;charset=utf-8

换行符

有且只有1个换行符\r\n

数据声明2:

Content-Disposition:form-data;name=\"fSealH\"

换行符

声明和数据值之间,有且只有2个换行符\r\n\r\n

数据值

1

换行符

有且只有1个换行符\r\n

参数6

fSealPosX

文本参数

开始分隔符

"--" + boundary

换行符

有且只有1个换行符\r\n

数据声明1:

CContent-Type:text/plain;charset=utf-8

换行符

有且只有1个换行符\r\n

数据声明2:

Content-Disposition:form-data;name=\"fSealPosX\"

换行符

声明和数据值之间,有且只有2个换行符\r\n\r\n

数据值

1

换行符

有且只有1个换行符\r\n

参数7

fSealPosY

文本参数

开始分隔符

"--" + boundary

换行符

有且只有1个换行符\r\n

数据声明1:

CContent-Type:text/plain;charset=utf-8

换行符

有且只有1个换行符\r\n

数据声明2:

Content-Disposition:form-data;name=\"fSealPosY\"

换行符

声明和数据值之间,有且只有2个换行符\r\n\r\n

数据值

1

换行符

有且只有1个换行符\r\n

结束

结束分隔符

"--" + boundary "--",结束分隔符之后可以没有换行符

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐