【问题标题】:How to send MIME over HTTP?如何通过 HTTP 发送 MIME?
【发布时间】:2011-05-29 19:19:28
【问题描述】:

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

    1234563我是否应该以同样的方式将我的文件内容写入 base64 中的参数之一?这也可以让我提供补充参数。
  1. 或者我应该只用我的文件内容填充 POST 正文(在 base64 中,对吗?)?如果是这样,有什么方法可以提供有关该文件的其他信息?

这些方式中只有一种可以接受还是两者都可以接受?如果是这样,最佳做法是什么?

此外,非常非常感谢 Qt 的 C++ 代码示例,但完全没有必要:)

【问题讨论】:

标签: http qt mime


【解决方案1】:

POST 请求中的整个 key=value 正文仅用于将表单数据发送到服务器时。如果您只想发布 .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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    相关资源
    最近更新 更多