我想收到以下信息 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 全局变量访问。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top