在PHP 中手動解析原始Multipart/Form-Data 資料
處理來自Multipart/form-data 格式的HTTP PUT 請求的資料時, PHP 不會自動解析原始資料。因此,開發人員在從此類請求中提取資訊時可能會遇到挑戰。
解決方案:
讀取原始請求資料:
從內容類型中提取邊界標頭:
依邊界分割資料:
將區塊分成單獨的欄位:
對於每個區塊:
對於每個區塊:
<code class="php">function parse_raw_http_request(array &$a_data) { $input = file_get_contents('php://input'); preg_match('/boundary=(.*)$/', $_SERVER['CONTENT_TYPE'], $matches); $boundary = $matches[1]; $a_blocks = preg_split("/-+$boundary/", $input); array_pop($a_blocks); foreach ($a_blocks as $id => $block) { if (empty($block)) continue; if (strpos($block, 'application/octet-stream') !== FALSE) { preg_match('/name=\"([^\"]*)\".*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches); } else { preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches); } $a_data[$matches[1]] = $matches[2]; } }</code>
範例程式碼:
使用類型<code class="php">$a_data = array(); parse_raw_http_request($a_data); var_dump($a_data);</code>
以上是如何在 PHP 中手動解析原始多部分/表單資料資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!