Мой сверстник разрабатывает приложение для iPhone, которое позволит пользователям размещать изображения на моем сайте через мой API. Я создаю часть API, которая будет принимать и обрабатывать изображения.
Мобильный разработчик отправляет такие заголовки:
Content-Disposition: form-data; name="photo_1"; filename="photo_1.jpg" Content-Type: application/octet-stream
Когда вы ищете отправленные изображения, это тот же метод, что и для обычных HTML-форм? Должен ли я искать $ _FILES?
Или, используя PHP, как бы я нашел его образ?
Не похоже, что он отправляется через форму, т. <form enctype=multipart/form-data">
и <input type="file">
, поэтому массив $_FILES
не будет заполнен.
Вам, вероятно, нужно будет прочитать:
$HTTP_RAW_POST_DATA
или выполните:
$rawPost = file_get_contents("php://input");
Из руководства :
Вход php: // позволяет вам считывать необработанные данные из тела запроса. В случае запросов POST он предпочитает $ HTTP_RAW_POST_DATA, поскольку он не зависит от специальных директив php.ini. Более того, для тех случаев, когда по умолчанию HTTP_RAW_POST_DATA не заполняется по умолчанию, это потенциально менее энергоемкая альтернатива активации always_populate_raw_post_data. php: // вход не доступен с enctype = "multipart / form-data".
Для получения дополнительной информации, проверьте:
http://php.net/manual/en/wrappers.php.php
http://php.net/manual/en/reserved.variables.httprawpostdata.php
Я полагаю, что iOS отправляет весь файл как один блок данных в разделе POSTDATA HTTP-запроса. Вы можете получить всю POSTDATA (не разобранную):
<?php $postdata = file_get_contents("php://input"); ?>
$_FILES
предназначен для чтения файлов, отправленных с помощью enctype="multipart/form-data"
в надлежащей HTML-форме. iOS, вероятно, отправляет простой старый POST, содержащий только кучу байтов, которые представляют файл.
Скажи мне, если это решает!
См. Ответы на подобные вопросы (обработка загрузок из php://input
):