Вот что я имею в виду. Одна из наших программ имеет форму поддержки, которую пользователи используют для запроса поддержки. Что делает эта форма, она выполняет HTTP POST-запрос на PHP-скрипт, который должен собирать информацию и перенаправлять ее на адрес электронной почты поддержки.
Запрос POST содержит три текстовых поля типа Content-Type: text/plain
которые можно легко прочитать в PHP с использованием $_POST['fieldname']
. Однако некоторые из содержимого этого запроса POST являются файлами типа Content-Type: application/octet-stream
. Использование $_POST
, похоже, не работает с этими файлами. Как я могу прочитать содержимое этих файлов?
Заранее спасибо.
Вы должны использовать суперкоммулятор $ _FILES:
$contents = file_get_contents($_FILES['myfile']['tmp_name']);
Дополнительную информацию вы можете найти в руководстве . Это будет работать, только если вы используете кодировку multipart / form-data в своем запросе.
В противном случае вы можете прочитать необработанные данные POST, а затем проанализировать его самостоятельно:
$rawPost = file_get_contents('php://input');
Используйте массив $ _FILES.
Те, кто под суперкоммулятором $ _FILES. Читайте об этом здесь: http://php.net/manual/en/features.file-upload.php
В основном, вы получаете массив, подобный POST, но с такими вещами, как размер файла, временное имя и временное расположение файла, который вы можете использовать для тестирования и перемещения файла в постоянное место.
Дополнительная общая информация из руководства по PHP: http://php.net/manual/en/features.file-upload.php