(PHP 8 >= 8.4.0)
request_parse_body — 讀取並解析請求主體,然後返回結果
此函數會讀取請求主體並根據 Content-Type 標頭進行解析。目前支援兩種內容類型:
application/x-www-form-urlencoded
multipart/form-data
此函數主要用於解析 HTTP 方法非 POST 的 multipart/form-data 請求,這些請求不會自動填入 $_POST 和 $_FILES 超全域變數。
request_parse_body() 會消耗請求主體,而不會將其緩衝到 php://input 串流。
optionsoptions 參數接受一個關聯式陣列,以覆寫以下全域 php.ini 設定,用於解析請求主體。
max_file_uploadsmax_input_varsmax_multipart_body_partspost_max_sizeupload_max_filesize當請求主體根據 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',
]);
// 對上傳的檔案執行一些操作。
?>