PHP Conference Japan 2024

request_parse_body

(PHP 8 >= 8.4.0)

request_parse_body读取并解析请求体并返回结果

描述

request_parse_body(?array $options = null): array

此函数读取请求体并根据 Content-Type 标头对其进行解析。目前支持两种内容类型

  • application/x-www-form-urlencoded
  • multipart/form-data

此函数主要用于解析 HTTP 方法不是 POSTmultipart/form-data 请求,这些请求不会自动填充 $_POST$_FILES 超全局变量。

注意

request_parse_body() 会消耗请求体,而不会将其缓冲到 php://input 流中。

参数

options
options 参数接受一个关联数组,以覆盖以下用于解析请求体的全局 php.ini 设置。
  • max_file_uploads
  • max_input_vars
  • max_multipart_body_parts
  • post_max_size
  • upload_max_filesize

返回值

request_parse_body() 返回一个数组对,其中 $_POST 的等效值位于索引 0 处,$_FILES 的等效值位于索引 1 处。

错误/异常

当请求体根据 Content-Type 标头无效时,将抛出 RequestParseBodyException

options 包含无效键或对应键的无效值时,将抛出 ValueError

示例

示例 #1 request_parse_body() 示例

<?php
// 解析请求并将结果存储在 $_POST 和 $_FILES 超全局变量中。
[$_POST, $_FILES] = request_parse_body();
// 输出一些传输文件的內容
echo file_get_contents($_FILES['file_name']['tmp_name']);
?>

示例 #2 使用自定义选项的 request_parse_body() 示例

<?php
// form.php

assert_logged_in();

// 仅针对此表单,我们允许更大的上传大小。
[$_POST, $_FILES] = request_parse_body([
'post_max_size' => '10M',
'upload_max_filesize' => '10M',
]);

// 对上传的文件执行某些操作。
?>
添加注释

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top