質問

以下のものを受け取りたいです 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 グローバル変数を通じてアクセスできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top