I am trying to upload an image to my server from IOS7 via php5.
iOS Code
NSString *urlString = @"http://<domain>/conAPI/imageAPI.php";
NSData *imageData = UIImagePNGRepresentation(venueImageView.image);
NSMutableURLRequest *requestImage = [[NSMutableURLRequest alloc] init];
[requestImage setURL:[NSURL URLWithString:urlString]];
[requestImage setHTTPMethod:@"POST"];
NSString *boundary = @"0xKhTmLbOuNdArY";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[requestImage addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"
--%@
",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"uploadedimage\"; filename=\"V%@.png\"
",[userDictioanry objectForKey:@"user_id"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream
" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"
--%@--
",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[requestImage setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:requestImage returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"Image Return String: %@", returnString);
and my php
ini_set('log_errors',1);
$uploaddir = '/var/www/html/memberImages/';
print_r($_FILES);
$file = $_FILES['uploadedimage']['name'];
$uploadfile = $uploaddir . $file;
if (file_exists($uploaddir) && is_writable($uploaddir)) {
if (move_uploaded_file($_FILES['uploadedimage']['tmp_name'], $uploadfile)) {
echo 'DONE '.$file;
}else {
echo "error ".$_FILES['uploadedimage']['tmp_name'].' '.$uploadfile;
}
}else {
if (!file_exists($uploaddir)){
echo 'upload dir does not exist '.getcwd().' '.$uploadfile.'
';
}
if(!is_writable($uploaddir)) {
echo 'Upload directory is not writable.'.'
';
}
}
Under all circumstances I get "error" returned with the two filenames. error.log shows nothing. root user has read/write to the directory and all parents.
Can you please point out the simple flaw in my logic. I would also appreciate it if this did not involve third party methods. There are valid reasons for not using AFNetworking in this case.
Thanks in advance Chris