如何通过HTTP发送MIME?

时间:2010-12-23 05:35:31

标签: http qt mime

我需要通过HTTP POST请求,MIME编码,将某些数据发送到.zip存档中的服务器。我认为这意味着我只需要在请求标头中指定MIME类型。但是我对应该在请求的主体中放置什么感到困惑。到目前为止,我可以看到两种方法:

  1. 通常,我接受它(抱歉,我不是网络编码器,因此对HTTP有点蹩脚),POST请求正文包含参数对=一些+数据除以'&'。我是否应该以相同的方式执行此操作并在其中一个参数中在base64中写入我的文件内容?这也可以让我提供补充参数。

  2. 或者我应该只用我的文件内容填充POST正文(在base64中,对吧?)?如果是这样,有没有办法提供有关该文件的其他信息?

  3. 只有一种方式可以接受或者两者兼而有之?如果是这样,最佳做法是什么?

    此外,C ++ for Qt中的代码示例将非常受欢迎,但完全没有必要:)

1 个答案:

答案 0 :(得分:2)

POST请求中的整个key = value body仅适用于将表单数据发送到服务器的情况。如果您只想发布.zip文件的内容,您可以将其作为POST主体发送,无需像您描述的那样将其设置为表单帖子。您可以在请求中设置以下标头:

Content-Type: application/zip
Content-Disposition: attachment; filename=myzip.zip

你甚至不一定要对身体进行base64编码,尽管如果这是你的服务器所期望的那样。

Content-Disposition是您需要描述有关文件上传的更多信息的内容。您可以在此处找到有关它的一些详细信息:

http://en.wikipedia.org/wiki/MIME#Content-Disposition

在这里

http://www.ietf.org/rfc/rfc2183.txt

在服务器端,您只需编写一些代码即可获得响应体(这很简单,尽管YMMV取决于语言和框架),并根据需要处理它。

对于一个真实世界的例子,你可能会发现看看AtomPub如何做到这一点很有用:

http://bitworking.org/projects/atom/rfc5023.html