0

从我的笔记本电脑上,我向我的网络服务器发起了一个 POST 请求。HTTP POST 请求看起来像这样(通过 POSTMAN 控制台查看时)

POST /api/fwupgrade HTTP/1.1
User-Agent: PostmanRuntime/7.24.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 2b1e72fa-f43b-4fc9-9058-e78533c30f0f
Host: 192.168.71.24
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------572971355726244237076370
Content-Length: 222
----------------------------572971355726244237076370
Content-Disposition: form-data; name="FileName"; filename="help.txt"

<help.txt>

内容长度表示为 222。文件 help.txt 只有以下字符(为了测试我放了 10 a)aaaaaaaaaa

当我在服务器上收到一个 http 请求时,我解析请求,我看到内容长度为 222。现在我的问题是:

a)我假设这个内容长度 222 包括“内容长度:222”行之后的字节,对吗?所以这意味着请求正文从

 ------------------572971355726244237076370
    Content-Disposition: form-data; name="FileName"; filename="help.txt"

    <help.txt>

这种理解正确吗?

b)请求正文是否始终遵循相同的格式,即在“Content-Length:”之后它以文件数据开始和结束,在我的情况下为“help.txt”?

c) 假设 #a 是正确的,我计算实际数据从 filename="help.txt" /r/n 之后的位置开始,然后将其存储在我服务器上的文件中。但是在 aaaaaaaaaa 之后我得到了 58 个剩余字节。知道我应该如何解释 Content-length 或邮递员如何计算 Content-length 字段吗?

问候

4

1 回答 1

0

a) 大致是的。b) 这取决于 Content-Type(这里:multipart/form-data) c) 您需要一个解析器来处理 multipart/form-data 消息。例如,参见https://greenbytes.de/tech/webdav/rfc7578.html

于 2020-05-13T10:30:12.010 回答