用PHP接收多部分POST数据请求

时间:2020-03-06 14:25:19  来源:igfitidea点击:

我想在PHP中接收以下HTTP请求:

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数组中的索引键来访问表单元素,但是在这种情况下,没有表单元素名称,并且表单数据部分不是线性的(即子部分=多级数组)。

感谢帮助!

/罗伯特

解决方案

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

$ HTTP_GET_VARS,$ HTTP_POST_VARS等已过时,我们应使用$ _GET`,$ _ POST等。

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