2015-07-03 2 views
4

Я использую базу данных MYSQL для хранения изображения в моем приложении iOS. Я использую base64encoding и технологию декодирования для хранения изображения. Проблема: Сохраняет имя в базе данных как строку, которая в порядке. Но он не сохраняет изображение в папке htdocs. Где моя проблема и как ее решить?Хранение изображения в базе данных MYSQL из приложения iOS

код PHP:

<?PHP 
    $host='localhost'; 
    $name='root'; 
    $pwd=''; 
    $db='i'; 
    $conn=mysql_connect($host,$name,$pwd); 
    mysql_select_db($db,$conn); 
    if($conn) 
    { $image=$_POST['image_string']; 
     if($image!='') 
     { 
      $img = @imagecreatefromstring(base64_decode($image)); 
      if($img != false) 

      { 
       imagejpeg($img, "htdocs/".$image."");} 
     } 
     $qur=mysql_query("INSERT INTO `j` (`id`, `name`) VALUES (NULL, '$image')"); 
     if($qur) 
     { 
     echo "inserted"; 
     } 
     else 
     { 
      echo mysql_error(); 
     } 
     } 

?> 

стороне клиента код:

NSData *imageData=UIImagePNGRepresentation(_imageView.image); 
NSString *string; 
if([imageData respondsToSelector:@selector(base64EncodedStringWithOptions:)]) 
{ 
    NSLog(@"iOS 7+"); 
    string=[imageData base64EncodedStringWithOptions:kNilOptions]; 
} 
else 
{ 
    string=[imageData base64Encoding]; 
} 

NSString *post=[[NSString alloc]initWithFormat:@"image_string=%@",string]; 
post = [post stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"]; 
NSURL *url=[[NSURL alloc]initWithString:@"http://localhost/lastImage.php"]; 
NSData *postDAta=[post dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *postlength=[NSString stringWithFormat:@"%lu",(unsigned long)[postDAta length]]; 
NSMutableURLRequest *request=[[NSMutableURLRequest alloc]init]; 
[request setURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postlength forHTTPHeaderField:@"Content-length"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postDAta]; 
NSError *error = [[NSError alloc] init]; 
NSHTTPURLResponse *response = nil; 
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

ответ

1

Сначала проверьте, если каталог, который вы хотите сохранить в письменном виде имеет разрешения.

Тогда попробуйте: imagejpeg($img, $_SERVER['DOCUMENT_ROOT'] . "/image_name.jpg");

+0

Я проверил разрешения, и это было только для чтения. Когда я преобразовал его в разрешение чтения записи, он начал работать. Спасибо @Mario.] –

+0

Как проверить разрешение без использования 'terminal'. Шаг1: щелкните правой кнопкой мыши по папке. Шаг 2: Нажмите «получить информацию». Шаг 3: «Проверьте общий доступ и разрешения» –

Смежные вопросы