【问题标题】:C++ | Winsock - Correct way to write HTTP Post for uploading a file?C++ | Winsock - 为上传文件编写 HTTP Post 的正确方法?
【发布时间】:2016-09-06 01:30:18
【问题描述】:

警报我看到有人问过,但通常是关于 CURL,我问的是通过 WinSock2 发送它。

好的,所以我知道如何很容易地制作 POST 和 GET 语句,(使用 Application/application/x-www-form-urlencoded POST)但我不知道如何使用 multipart/form-data,我知道它有与边界有关的事情来指定您何时完成发送数据。

但是上传文件的基本 HTTP POST 应该是什么样的呢? (你也可以上传到 PHP POSTBACK 吗?如果它是 application/x-www-form-urlencoded 我可以看到它类似于 filename=hello.png&data=...)

类似这种格式的东西:(这就是我对发送数据的了解)我在网上找不到可靠的例子,所以我问这个问题。

POST /postback.php HTTP/1.1
HOST: www.website.com
Content-Type: multipart/form-data; boundary=----IAmABoundary
Content-Length: 300

------IAmABoundary
Send Binary Data?
------IAmABoundary--

【问题讨论】:

    标签: php c++ http postback


    【解决方案1】:

    使用 fiddler 捕获上传文件然后您可以看到实际格式,我记得上面的示例或多或少是正确的。这是一个更完整的答案,并带有一个很好的示例:Example of multipart/form-data

    【讨论】:

      【解决方案2】:

      HTTP 消息是 MIME 消息。它实际上是一种相当复杂的编码格式。

      首先阅读RFC 2045。这是 MIME 的基本规范。

      然后,转到RFC 2046。 RFC 2046 的第 5 节列出了 multipart MIME 消息的规范,用于您所看到的 multipart/form-data 格式。

      确实需要阅读大量材料。但必须完全理解 MIME 格式的消息,以便了解文件上传的工作原理。

      【讨论】:

        【解决方案3】:

        如果你真的想发送文件内容,你可以把文件内容放在HTTP Headers之后,并设置content-type和content-length

        html 表单使用 multipart/form-data 来发布/提交在其字段中有文件的表单,它们使用多部分边界分隔部分/字段

        【讨论】:

          猜你喜欢
          • 2016-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-01
          • 2021-04-09
          • 1970-01-01
          相关资源
          最近更新 更多