存取原始Multipart/Form-Data POST 資料
在PHP 中,multipart/form-data POST 請求的預設行為是輸入資料請求的預設行為是輸入資料請求的預設行為由PHP 自動解析。如果您需要存取原始的、未解析的數據,這會帶來問題。
雖然 php://input 和 $HTTP_RAW_POST_DATA 都可以用於存取原始 POST 數據,但兩者都不適用於 multipart/form-data 請求。
解決方法
不幸的是,獲取原始資料對於 multipart/form-data 表單來說,透過傳統的 PHP 方法是不可能的。 PHP 堅持自己解析數據,無法手動解析。
但是,有一個解決方法,涉及修改 Apache 配置。透過將以下程式碼片段新增至您的apache conf 檔案中,您可以變更傳入要求的Content-Type:
<Location "/backend/XXX.php"> SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate OLD_CONTENT_TYPE= RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE </Location>
這將強制PHP 將multipart/form-data 請求視為multipart/form -data -alternate,防止自動解析。使用此解決方法,您可以透過讀取 php://input 並手動解析它來存取原始資料。
限制
雖然此解決方法允許您存取原始資料也有限制。具體來說,$_FILES 超全域變數將為空,因為 PHP 不會解析表單資料。
以上是如何在 PHP 中存取原始多部分/表單資料 POST 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!