我正在尝试理解http请求,当我在请求主体上使用post方法发送一串数据时,我们发送的值如下所示:
--------------------------d74496d66958873e
Content-Disposition: form-data; name="person"
anonymous
--------------------------d74496d66958873e
但是如果我们使用post方法发送文件,它将是这样的:
--------------------------d74496d66958873e
Content-Disposition: form-data; name="fileToUpload"; filename="icon.png"
Content-Type: image/png
-O9†q#ë#ÞÿËà3l†v}uá#t(<‡c3f
úS©59ñõCáa#Ž¡#Za%ð.ž zxý˜F#ZqÄð&^
jx[1…ÕЊËÂ$Æ‚#Þ
--------------------------d74496d66958873e
我的问题是:
发送文件时,-------------------------- d74496d66958873e之间包含的外来字是什么? 我的意思是
-O9†,Q#ë#ÞÿËà3l†V} UA#吨(小于‡C3F úS©59ñõCáa#Ž¡#Za%ð.žzxý〜F#ZqÄð&amp; ^ JX [1 ...ÕЊËÂ$Æ,#Þ
该字符是二进制,六进制还是base64还是什么?
当我们想用编程语言手动编写http请求时如何将图像文件更改为字符?
答案 0 :(得分:0)
这些是纯二进制字节。文件icon.png
在HTTP客户端发送时包含的所有字节。
格式在RFC 1867中描述,基本上是这样的:
--[boundary]
[headers]
[N bytes]
--[boundary]
[headers]
[M bytes]
--[boundary]--
要提取内容,您需要解析经过边界,解析标题(0,1或多个),然后读取二进制数据,直到到达结束边界。 (最后的边界在右边有两个额外的破折号。)
...并且在单个多部分POST中可以存在任何数量的此类部件。