Не работает PHP is_uploaded_file для приложения iOS - PullRequest
0 голосов
/ 14 декабря 2011

Я пишу PHP / веб-сервер для загрузки изображений для приложения iOS.Используя HTML-файл, я могу загрузить изображение в мой скрипт просто отлично.Я даже написал Perl LWP-скрипт для публикации изображения без проблем.

Когда приложение iOS загружает изображение, оно перестает работать, когда я вызываю is_uploaded_file.Отправка переменной $ _FILES в ответе json покажет нам, что мы ожидаем от загрузки файла.Также я делаю file_exists для tmp_name, и это тоже не удается.

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

Вот блок кода, в котором он останавливает обработку загрузки изображения:

    //Check for valid upload
    if(!is_uploaded_file($_FILES['photo']['tmp_name'])) {
        $this->errors['upload_2'] = $photoErrorString;
        $this->errors['files'] = $_FILES;
        $this->errors['image_uploaded'] = file_exists($_FILES['photo']['tmp_name']);
        error_log("uploadPhoto: upload_2");
        return false;
    }

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Ссылка ниже - это действительно хорошая категория NSData base64.Если вы не знакомы с категориями в Obj-C, это в основном стандартные объекты, которые мы знаем и любим некоторыми добавленными методами (в данном случае, кодирование / декодирование base64).Этот класс действительно просто вставить в существующий проект.Наслаждайтесь.

http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html

1 голос
/ 14 декабря 2011

Насколько я знаю, вы не можете загрузить изображение или фотографию из приложения iOS напрямую, используя PHP-скрипты.

Вы должны отправить 64-битное кодирование из приложения iOS в сценарий, отвечающий за загрузку файла в видепростой пост.Затем этот сценарий сначала декодирует строку вашей фотографии, а затем сценарий PHP создаст изображение из строки только для загрузки.

Код будет выглядеть примерно так:

$filedb = $path_to_dir.$file_name_of_the_photo;
$profile_pic = $_POST['profile_pic'];
$profile_pic= base64_decode($profile_pic);
if(($img = @imagecreatefromstring($profile_pic)) != FALSE) 
{
  if(imagepng($img,$filedb))//will create image and save it to the path from the filedb with the name in variable file_name_of_the_photo
  {
imagedestroy($img);// distroy the string of the image after successful upload
// do other updates to database if required
  }
  else //cannot create imagepng Error
  { 
//do what required
  }
}

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...