PHP で生のマルチパート/フォーム データ データを手動で解析する
問題の概要
マルチパート/フォーム データ形式の生の HTTP リクエスト データを解析すると、 PHP では、特に自動的に解析されない PUT リクエストを介してデータを受信する場合は困難です。
手動解析による解決策
PHP は multipart/form-data を含む PUT リクエストを自動的に処理しないため、手動で解析が必要です。これを実現する方法は次のとおりです:
-
生データの読み取り: file_get_contents('php://input') を使用して生のリクエスト データを読み取ります。
- 境界の抽出: CONTENT_TYPE ヘッダーを解析して、マルチパート データ セグメントを区切る境界文字列を取得します。
-
コンテンツの分割: 境界文字列に基づいて生データをブロックに分割します。 。末尾の「--」要素を削除します。
-
ブロックの解析: 各ブロックを反復処理して、データ フィールドを識別して解析します:
-
アップロードされたファイル: application/octet-stream MIME タイプを使用したファイルのアップロードを示すブロックに一致します。 name 属性とバイナリ ファイルの内容を抽出します。
-
非ファイル フィールド: フォーム データ フィールドを含むブロックと一致します。 name 属性と対応する値を抽出します。
使用法
- 空の配列を引数として parse_raw_http_request 関数に参照渡しします。
- 関数を呼び出して、解析されたデータを配列に入力します。
- フォーム フィールド名に対応する配列キーを使用して、解析されたデータにアクセスします。
以上がPHP で生のマルチパート/フォームデータリクエストを手動で解析する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。