0

我正在尝试将带有 XMLHttpRequest 和 FormData API 的图像文件上传到我的 G-WAN 服务器,但我无法检索文件内容。这是 h_entities 中的输出:

-----------------------------75940917410019849751723987620 Content-Disposition: form-data; name="test_param" test_value 
-----------------------------75940917410019849751723987620 Content-Disposition: form-data; name="uploadedFile"; filename="test.png" Content-Type: image/png PNG

“内容类型”是多部分/表单数据。有没有人设法将文件上传到 G-WAN?我找不到一个例子。谢谢!

4

1 回答 1

0

我花了最后几个小时为 G-WAN v3.10+ 编写了一个名为entity.html(带有文件[browse]按钮的表单POST)的专用示例,它将调用entity.cservlet(报告有关POST实体的所有内容并列出其前 1,000 个字节)。

您的 G-WAN 版本 3.3 将遇到的第一件事是 POST 实体大小限制 - 您将收到 HTTP 错误 413(请求实体太大)。

我编写了一个 servlet 示例entity_size.c,用于显示如何修改此限制(这可以在处理程序或 servlet 中随时完成)。

您必须做的第二件事(使用 G-WAN v3.10+ 自动完成)是加载尚未加载 HTTP 请求的实体的任何缺失部分(在 v3.3 中,这需要一个处理程序使用返回码来阅读更多内容,直到所有内容都加载完毕)。

这两点是反复出现的问题(在现已解散的论坛上),所以是时候举个例子了。

因此,除非您非常勇敢(并且愿意遵循上述指示),否则您已经明白,等待本月晚些时候发布的 v3.10 可能会更好:它将为您完成工作,您将拥有一个几个经过测试的示例可供学习。

请注意,entity.c也可以调用它来分析任何类型的请求,不仅是multipart/form-data编码,而且不仅是POST请求(它还演示了PUTDELETE)。

最后一点:我还修改了代码以确保 URI 参数和POST/PUT实体都列在 servlet 中argc/argv main()

这允许执行以下操作:POST /?blog/user/1245/day/24您需要访问的所有内容user=1245day=24(以及实体)都是读取argv[].

希望这对您的项目有所帮助!

于 2012-10-18T15:32:40.897 回答