在PHP中接收多部分POST数据请求

时间:2008-09-19 09:49:11

标签: php http mime multipart form-data

我希望在HTTP

中收到以下PHP:个请求
Content-type: multipart/form-data;boundary=main_boundary

--main_boundary
Content-type: text/xml
<?xml version='1.0'?>
<content>
Some content goes here
</content>

--main_boundary
Content-type: multipart/mixed;boundary=sub_boundary

  --sub_boundary
  Content-type: application/octet-stream

  File A contents

  --sub_boundary
  Content-type: application/octet-stream

  File B contents

  --sub_boundary

--main_boundary--

(注意:我缩进了子部分只是为了使这篇文章更具可读性。)

我不是非常流利的PHP,并希望得到一些帮助/指针,以弄清楚如何在PHP代码中接收这种多部分表单请求。我曾经写过一些代码,我收到了一个标准的HTML表单然后我可以通过在$HTTP_GET_VARS数组中使用它们的名称作为索引键来访问表单元素,但在这种情况下,没有表单元素名称,并且表单数据部分不是线性的(即子部分=多级数组)。

感谢任何帮助!

/罗伯特

3 个答案:

答案 0 :(得分:3)

$HTTP_GET_VARS$HTTP_POST_VARS等是一种过时的表示法,您应该使用$_GET$_POST等。

现在,文件内容应该在$_FILES全局数组中,而如果没有元素名称,我不确定其余内容是否会显示在$_POST中。无论如何,如果 php.ini 中的always_populate_raw_post_data设置为true,则数据应该在$HTTP_RAW_POST_DATA中。此外,在阅读 php:// input

时,应显示整个请求

答案 1 :(得分:1)

你应该注意:

“php:// input允许您读取原始POST数据。它是$ HTTP_RAW_POST_DATA的内存密集型替代品,不需要任何特殊的php.ini指令。 php://输入不适用于enctype =“multipart / form-data”

从php手册...所以看来php://输入不可用

无法发表评论,但这是为了补充pilsetnieks的回答

答案 2 :(得分:-2)

上载的文件可以通过$ _FILE全局变量访问,其他参数可以通过$ _GET全局变量访问。