在 PHP 中接收多部分 POST 数据请求
题
我想收到以下信息 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
数组,但在这种情况下没有表单元素名称,并且表单数据部分不是线性的(即。子部分=多级数组)。
感谢您的帮助!
/罗伯特
解决方案
$HTTP_GET_VARS
, $HTTP_POST_VARS
, , ETC。是一个过时的符号,你应该使用 $_GET
, $_POST
, , ETC。
现在,文件内容应该位于 $_FILES
全局数组,而如果没有元素名称,我不确定其余内容是否会显示在 $_POST
. 。无论如何,如果 always_populate_raw_post_data
设置为 true php.ini, ,数据应该在 $HTTP_RAW_POST_DATA
. 。另外,阅读时应该显示整个请求 php://输入.
其他提示
您应该注意:
“php://input 允许您读取原始 POST 数据。它是 $HTTP_RAW_POST_DATA 的内存密集型替代方案,并且不需要任何特殊的 php.ini 指令。php://input 不适用于 enctype=”multipart/form-data”
从 PHP 手册...所以看来 php://input 不可用
尚无法发表评论,但这旨在补充 pilsetnieks 的答案
上传的文件可以通过 $_FILE 全局变量访问,其他参数可以通过 $_GET 全局变量访问。
不隶属于 StackOverflow