PHPにてファイルアップロードを行う際に,通常であれば
スーパーグローバル変数の$_FILESを用いて情報を取り出すかと思います。
PHPマニュアルにもphp://inputからはmultipart/form-dataは対応していないと明記がありますが,調べ尽くしたわけではないですが以下のような条件だとfile_get_contents("php://input");でマルチパートで区切られたファイルのバイナリデータを捕まえることが できました。
ini
1php_value upload_max_filesize "1M" 2php_value post_max_size "1M" 3
php
1 ini_set("memory_limit", -1); 2 print_r($_FILES); 3 print_r($_POST); 4 print("<br >"); 5 ob_start(); 6 print(file_get_contents("php://input")); 7 $get = ob_get_clean(); 8 file_put_contents("/tmp/".time(), $get);
処理としては上記のようなサンプルでやってみました。
上記のようなini設定の場合$_POSTも$_FILESも空っぽになりますが
php://inputには正真正銘生のPOSTデータが入っていました。
PHPのバージョンは7.1.5でやっていますが,かろうじてファイルアップ時の扱えるサイズを超えているという
Warning: POST Content-Length of 7007833 bytes exceeds the limit of 1048576 bytes in Unknown on line 0
上記のようなwarningが出ますがphp://inputでmultipart/form-dataは取得できます。
ズバリこれはバグですか?仕様ですか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/18 14:34