PHP - сохранение загруженного изображения на сервер - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь сохранить загруженное изображение с iPhone на сервер, используя PHP.Я использую ASIHTTPRequest для обработки запроса данных.Это мой код iPhone:

[request setPostValue:someString forKey:@"string1"];
[request setPostValue:anotherString forKey:@"string2"];
[request addData:[NSData dataWithData:UIImageJPEGRepresentation(anImage, 0.9)]
         withFileName:@"img.jpg" andContentType:@"image/jpeg" forKey:@"img"];

[request startSynchronous];

На стороне сервера в настоящее время я использую этот код PHP, чтобы попытаться сохранить изображение в папку на моем сервере:

print_r($_FILES);

$folder = 'upload/';
$image_path = basename($_FILES['img']['name']);
echo $folder . $image_path . "\n";
if (move_uploaded_file($_FILES['img']['tmp_name'], $folder . $image_path)) {
    echo 'ok!';
} 
else {
    echo 'fail !';
}

Строкизагружаются просто отлично, и когда я print_r() я вижу содержимое массива изображения, как я ожидаю, но по какой-то причине при попытке сохранить изображение, я получаю "сбой!"выводится на консоль.Что здесь не так?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 24 февраля 2012

Попробуйте выполнить следующий шаг, прежде чем перемещать изображение

if(!is_dir($folder))
{
   echo "Folder does not exist" ;

   if(!mkdir($folder))
   {
      echo "Attempt to create folder failed" ;
   }
}
else if(!is_writable($folder))
{
   echo "Folder nto writeable" ;

   if(!chmod($folder, 0755))
   {
        echo "Attempt to make writeable failed" ;
   }
}
 else {

   if (move_uploaded_file($_FILES['img']['tmp_name'], $folder . $image_path)) {
      echo 'ok!';
   }
   else {
    echo 'fail !';
   }    
}

Что вы получаете ???

0 голосов
/ 24 февраля 2012

Пожалуйста, не забудьте также проверить безопасность загружаемого файла. Например, проверьте типы файлов по белому списку (jpeg, png, gif и т. Д.) - я уверен, что вы не хотите, чтобы кто-то мог загрузить скрипт на ваш сайт?

Кроме того, в долгосрочной перспективе вам лучше будет вручную создать папку для загрузки и установить соответствующие разрешения, а не делать это для PHP-скрипта.

...