PHP でのマルチパート POST データ リクエストの受信
質問
以下のものを受け取りたいです HTTP
でリクエストする PHP:
Content-type: multipart/form-data;boundary=main_boundary
--main_boundary
Content-type: text/xml
<?xml version='1.0'?>
<content>
Some content goes here
</content>
--main_boundary
Content-type: multipart/mixed;boundary=sub_boundary
--sub_boundary
Content-type: application/octet-stream
File A contents
--sub_boundary
Content-type: application/octet-stream
File B contents
--sub_boundary
--main_boundary--
(注記:この投稿を読みやすくするためにのみ、サブ部分をインデントしています。)
私は PHP にあまり詳しくないので、この種のマルチパート フォーム リクエストを PHP コードで受け取る方法を理解するためのヘルプ/ポインタを入手したいと考えています。以前、標準の HTML フォームを受け取るコードを書いたことがあります。その後、その名前をインデックス キーとして使用してフォーム要素にアクセスできました。 $HTTP_GET_VARS
配列ですが、この場合はフォーム要素名がなく、フォームデータ部分は線形ではありません(つまり、サブパーツ = マルチレベル配列)。
助けてくれてありがとう!
/ロバート
解決
$HTTP_GET_VARS
, $HTTP_POST_VARS
, 、など。は古い表記法なので、使用する必要があります $_GET
, $_POST
, 、など。
ファイルの内容は次のとおりです。 $_FILES
一方、要素名がない場合、残りのコンテンツがグローバル配列に表示されるかどうかはわかりません。 $_POST
. 。とにかく、もし always_populate_raw_post_data
設定は true です php.ini, 、データは次のとおりです。 $HTTP_RAW_POST_DATA
. 。また、読み取り時にリクエスト全体が表示されるはずです。 php://入力.
他のヒント
次の点に注意してください。
「php://input を使用すると、生の POST データを読み取ることができます。これは、$HTTP_RAW_POST_DATA に代わるメモリ消費量が少なく、特別な php.ini ディレクティブを必要としません。php://input は enctype=”multipart/form-data” では使用できません
PHPマニュアルより…php://input が利用できないようです
まだコメントできませんが、これはpilsetnieksの回答を補完することを目的としています
アップロードされたファイルは $_FILE グローバル変数を通じてアクセスでき、他のパラメータは $_GET グローバル変数を通じてアクセスできます。