php http request content raw data enctype = multipart / form-data

В настоящее время я кодирую два класса: HttpRequest и HttpResponse. Я хочу закодировать свои собственные классы HTTP.

Я столкнулся с проблемой с методом POST, используя форму с enctype = multipart / form-data: я не могу получить содержимое запроса.

После долгого исследования и поиска я обнаружил, что для получения содержимого запроса я должен использовать file_get_contents("php://input") . Когда я тестирую его, у меня есть пустая строка var_dump(file_get_contents("php://input")) .

У меня нет доступа к конфигурации сервера / php.

Я тестирую следующий код:

 <?php $input = file_get_contents('php://input'); var_dump($input); ?> <html> <body> <form action="./" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="text" name="namen" id="nameid" /><br/> <input type="file" name="file" id="file"><br> <input type="file" name="file2" id="file2"><br> <input type="submit" name="submit" value="Submit"> </form> </body> </html> 

И после отправки, у меня есть этот результат: string(0) "" . Это очевидно, потому что вход php: // не работает с формами enctype = "multipart / form-data".

Я хотел бы иметь что-то вроде:

 -----------------------------19972703421793859182225487886 Content-Disposition: form-data; name="namen" ds -----------------------------19972703421793859182225487886 Content-Disposition: form-data; name="file"; filename="toto.xml" Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <Toto></Toto> -----------------------------19972703421793859182225487886 Content-Disposition: form-data; name="file2"; filename="" Content-Type: application/octet-stream -----------------------------19972703421793859182225487886 Content-Disposition: form-data; name="submit" Submit -----------------------------19972703421793859182225487886-- 

Способ ли он работает для любого метода запроса? Или я ошибаюсь?

Я собираюсь сделать очевидное здесь: зачем даже пытаться разобрать это самостоятельно? Данные находятся в пределах вашего диапазона с легким использованием $ _POST [] / $ _FILES [] ..

Вы все равно можете создать свой собственный класс вокруг этих значений вместо того, чтобы ваши собственные классы пытались выполнить тот же массив данных, что и php-компилятор для вас.

Чтобы дать вам правильный ответ: я не знаю, как получить ваш php: // вход обратно, поскольку он, вероятно, читается компилятором PHP, и поэтому вы находитесь в конце потока (плюс: it доступно только для чтения, поэтому, вероятно, нет способа сбросить указатель на начало потока).

php: // вход не доступен с enctype = "multipart / form-data". http://php.net/manual/en/wrappers.php.php