Я использую базу данных 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];
Я проверил разрешения, и это было только для чтения. Когда я преобразовал его в разрешение чтения записи, он начал работать. Спасибо @Mario.] –
Как проверить разрешение без использования 'terminal'. Шаг1: щелкните правой кнопкой мыши по папке. Шаг 2: Нажмите «получить информацию». Шаг 3: «Проверьте общий доступ и разрешения» –