在C ++中通过HTTP POST上传文件

时间:2009-06-08 21:06:30

标签: c++ http file post upload

我正在尝试将文件和其他POST变量发送到我服务器上的PHP脚本。谷歌没有很好的资源,我发现的代码示例不起作用。最好不要使用cURL。

5 个答案:

答案 0 :(得分:4)

如果你打算自己动手,你需要相关的RFC for HTTP file uploading(谷歌搜索“rfc http文件上传”会产生相同的结果)。此RFC还显示了如何处理混合的文件和其他FORM数据(或POST变量)。问题当然是你可能也想阅读MIME RFC ......

答案 1 :(得分:2)

只需几个资源就可以轻松推出自己的

这是an example of a GET request via ASIO(Boost中的C ++网络库)

这是the HTTP protocol made really easy

GET请求是您查看网站上任何页面的方式。使用该代码,您可以下载任何页面并将其作为原始文本。如您所见,它会向服务器发送GET标头。正如that HTTP protocol page中所述,POST request看起来像这样

POST /path/script.cgi HTTP/1.0 From:
frog@jmarshall.com User-Agent:
HTTPTool/1.0 Content-Type:
application/x-www-form-urlencoded
Content-Length: 32

home=Cosby&favorite+flavor=flies
  1. 发送文件:
  2. 您在发布后
  3. 放置了您的网址
  4. 将内容类型更改为您尝试上传的文件类型。
  5. 将Content-Length设置为该文件中的字节数
  6. 在carrage返回后附加文件(替换“home = Cosby& favorite + flavor = flies”)

答案 2 :(得分:1)

我会说你自己滚。它不太复杂。

Wireshark中捕获从浏览器发送的HTTP帖子,并根据需要使用spec作为指南进行反向工程。 (请参阅下面的 Andreas Magnusson的答案,了解更多相关规范。)

我会亲自推荐这种方法来学习协议而不仅仅是纯粹的规范。从规范中学习东西很难。我宁愿通过已知的http客户端探索不同的行为,并尝试使用规范作为我的指南来弄清楚事情是如何工作的。

在您熟悉HTTP后,通过套接字格式化并发送数据。

另外,如果您不熟悉套接字编程,请查看Beej's guide to socket programming

答案 3 :(得分:1)

另一种(更快速,更脏)的解决方案是使用实用程序,通过system()或类似的调用。 例如,wget实用程序有一个--post-file选项。

答案 4 :(得分:1)

这对我来说非常适合debian(http get,http post):

http://cpp-netlib.github.com

我使用v 0.9.3,需要提升1.49

相关问题