ホームページ >バックエンド開発 >PHPチュートリアル >PHP で生のマルチパート/フォームデータ POST データにアクセスするにはどうすればよいですか?
生の Multipart/Form-Data POST データへのアクセス
PHP では、multipart/form-data POST リクエストのデフォルトの動作は、入力データは PHP によって自動的に解析されます。これは、解析されていない生のデータにアクセスする必要がある場合に問題を引き起こします。
php://input と $HTTP_RAW_POST_DATA の両方を使用して生の POST データにアクセスできますが、どちらもマルチパート/フォームデータ リクエストには機能しません。
回避策
残念ながら、生のファイルを入手するには従来の 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 から読み取り、手動で解析することで生データにアクセスできます。
制限事項
この回避策により、生データには制限もあります。具体的には、PHP はフォーム データを解析しないため、$_FILES スーパーグローバルは空になります。
以上がPHP で生のマルチパート/フォームデータ POST データにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。