Получить изображение из HTTP POST с PHP

Поэтому я отправляю изображение через Интернет, используя HTTP POST и отправляя его на php-скрипт на моем сервере. Я хочу, чтобы иметь возможность взять этот образ и сохранить его. Я делаю это хорошо с текстом, но когда дело доходит до другого контента, такого как изображение, он ошибочно говорит, что он не может найти переменную, и когда я пытаюсь file_get_contents , это тоже не нравится. Я отправляю изображение с iPhone, так что мой запрос POST выглядит так.

 NSMutableData *postBody = [NSMutableData data]; [postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:[@"Content-Disposition: form-data; name=\"media\"; filename=\"dummy.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:[@"Content-Type: image/jpeg\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:[@"Content-Transfer-Encoding: binary\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:imageData]; [postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]]; [postRequest setHTTPBody:postBody]; 

Остальная часть запроса написана, но мне действительно не хочется публиковать все это.

Но независимо от того, как я отправляю запрос, и на стороне сервера php,

 <?php echo "Some Message"; $nameValue = $_POST['name']; echo "<br/>"; echo $nameValue; $otherValue = $_POST['other']; echo "<br/>"; echo $otherValue; file_get_contents('dummy.jpg'); // or I tried this $imageData = $_POST['media']; ?> 

Кажется, я не могу захватить изображение. Обе попытки получить изображение потерпели неудачу, и я не знаю почему. Какие-либо предложения?

РЕДАКТИРОВАТЬ:

Я добавил инструкцию print_r($_FILES) чтобы узнать, что я получу, и возвратил следующее.

 ( [media] => Array ( [name] => dummy.jpg [type] => [tmp_name] => [error] => 1 [size] => 0 ) ) 

Поэтому кажется, что он получает изображение, по крайней мере, его имя, но по какой-то причине он не получает фактические данные и бросает какую-то ошибку. Я предполагаю, что это, вероятно, на стороне iPhone, если он не отправляет данные, и мой PHP-сервер видит ошибку. Однако я не уверен, что кто-нибудь когда-нибудь переживает нечто подобное?

EDIT 2:

У меня наконец все работает. Оказывается, все было отформатировано правильно. У меня просто была проблема с загрузкой размера файла. Изображения, которые я отправлял, составляли около 8 МБ, и, очевидно, наш сервер не может справиться с этим, поэтому я просто сбил качество в jpeg, и эта проблема была решена. Тогда были некоторые проблемы с разрешениями, также ничего, что-то вроде sudo chmod не может исправить. Спасибо всем за ваши предложения и помощь, я бы хотел принять более одного ответа!

Related of "Получить изображение из HTTP POST с PHP"

Код ошибки «1» означает, что изображение, которое вы пытались загрузить, слишком велико. http://php.net/manual/en/features.file-upload.errors.php

Проверьте параметр upload_max_filesize в php.ini.

Я видел, что вы пытаетесь продолжить с $ _FILES ['media'] ['name'], но фактически загруженный файл доступен по пути, указанному в $ _FILES ['media'] ['tmp_name'].

Чтобы убедиться, что вы правильно загружаете свою загрузку, обратитесь к php-документу: http://php.net/manual/en/features.file-upload.post-method.php

Сначала вы должны вывести результат file_get_contents (1), тогда вам нужно сообщить браузеру, что вы обслуживаете изображение вместо стандартного HTML (2).

 echo file_get_contents('dummy.jpg'); // 1 header("Content-Type: image/jpg"); // 2 

Я просто просмотрел поверхность для функции header ; вы захотите добавить еще несколько заголовков в реальном мире. Проверять, выписываться:

  • заголовки php

Проверьте массив $ _FILES на стороне PHP и посмотрите, находится ли ваше изображение там …

Сделайте print_r($_FILES);