3

在互联网上看到过很多关于不同方法的帖子,但我仍然没有找到正确的答案。

问题:我的 CGI 应用程序在嵌入式 Web 服务器中运行,我使用的语言是 C,而我要做的是处理通过表单的 POST 请求发送的文件。

到目前为止,该应用程序一直在做所有事情而没有使用任何库,但现在我需要添加这个函数,我真的不知道我可以使用哪个库来这样做。对于这样一个简单的目标来说,从头开始似乎太复杂了。也许不是技术上的影响,而是浏览器之间可能存在的差异。

有什么建议吗?

编辑:我希望能够从浏览器发布文件,并且我想避免多部分内容类型,因为它是开销......

4

2 回答 2

2

要在浏览器中使用上传文件<input type="file">,您必须使用enctype="multipart/form-data". 这是不可协商的——文件输入根本不适用于默认的表单编码 ( application/x-www-form-urlencoded)。

如果可以的话,我强烈建议使用类似 Perl 的CGI模块来解析上传。但是,如果您完全坚持使用 C,您可能想尝试类似https://github.com/iafonov/multipart-parser-c的东西。

于 2013-07-24T17:33:44.637 回答
0

我写了一个服务器来做这个。您将从该发布请求中收到的数据包只是数据。它将被格式化为 POST,这意味着会有一些信息,如

HTTP:POST 一些东西,比如版本数据:你的数据

您只需扫描直到看到 Data: 或一些表示发布请求的标头,然后复制此数据。那将是您的文件/参数/邮寄中发送的任何内容。它不会在 url 中(它有自己的标题部分)

编辑:帖子标题示例

 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=Mosby&favorite+flavor=flies  -> This is your data (this happens to be arguments home and favoriteflavor
于 2013-07-23T15:53:59.907 回答