如何从多部分Http请求中提取数据?

时间:2013-03-12 09:11:45

标签: http multipartform-data http-protocols

我正在编写HTTP Web服务器。我的服务器必须处理Http多部分请求。在我之前的实现中,我在请求的每个部分中都存在内容长度标头的帮助下提取数据。我正在使用的客户端为多部分请求中的每个部分(文件)提供了内容长度标题。

但是另一个客户端没有给出每个文件的内容长度。在我的实现中,我使用content-length头来提取那么多字节并将它们保存到文件中。

请告诉我如何现在提取数据。

我现在得到的标题是:

POST xxxxxxxxxxxxxxxxxxxxxxx&currentTab=PHOTOxxxxxxxxxxxxxxxx HTTP/1.1
Content-Length: 6829
Content-Type: multipart/form-data; boundary=SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj; charset=UTF-8
Host: host
Connection: Keep-Alive
User-Agent: Apache-HttpClient/xxxxxxxx
Accept-Encoding: gzip

--SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj
Content-Disposition: form-data; name="file"; filename="imagesCA5L2CL6_jpg(2)_jpg.jpg"
Content-Type: photo/jpg

**Some Data byte array**
--SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj--

在此请求中,部分数据中现在有内容长度标题。

编辑:

此前,此客户端用于在每个部分中发送内容长度标头。但由于某种原因,它不再发送它了。任何人都可以提出任何理由。

感谢

2 个答案:

答案 0 :(得分:0)

如果要实现HTTP / 1.1服务器,请查看RFC 2616。有关如何确定邮件长度的信息,请参阅section 4.4。有关如何实施multipart/form-data的信息,请参见RFC 2388

真正的答案是:不要重新发明轮子,否则你将不得不重新演绎几百页的RFC。那里有大量的图书馆和服务器。

如果您确实想编写自己的Web服务器,例如作为练习,您可能已经找到了这些RFC,对吗?

答案 1 :(得分:0)

像这样:从multipart / form-data POST读取文件输入

Reading file input from a multipart/form-data POST

相关问题