I have a script that successfully uploads an image to my server via PHP. THe upload part works, but I am also trying to pass variables to the PHP script that is uploading the image.
I am pretty confident that my PHP code is just fine, I just dont know whats going wrong with the Objective-C. I also notice that I never call NSData *... = [NSData dataWithContentsOfURL:[NSURL URLWithString:...]]; But I dont know if thats the problem...
NSData *data = UIImageJPEGRepresentation(twitterImage, 90);
NSString *profileId = [[NSUserDefaults standardUserDefaults] stringForKey:@"passedId"];
NSString *userId = [[NSUserDefaults standardUserDefaults] stringForKey:@"userId"];
NSString *urlString = [NSString
stringWithFormat:@"http://www.website.com/user_photo_upload.php?
member_id=%@&profile_id=%@",userId, profileId];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"_783465873689273842734";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data;
boundary=%@",boundary];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];
[request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
forHTTPHeaderField:@"Accept"];
[request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5)
AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14"
forHTTPHeaderField:@"User-Agent"];
[request setValue:@"http://google.com" forHTTPHeaderField:@"Origin"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"Content-Length %d\r\n\r\n", [data
length] ] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary]
dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data;
name=\"picture\"; filename=\"%@.png\"\r\n", @"newfile"]
dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n"
dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:data]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary]
dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
[request addValue:[NSString stringWithFormat:@"%d", [body length]]
forHTTPHeaderField:@"Content-Length"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request
returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData
encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnString);
My PHP Script:
<?php
$profile_id = $_GET['profile_id'];
$member_id = $_GET['member_id'];
$new_file_name="$profile_id-$member_id.png";
$target_path = "./user_photos/";
$target_path = $target_path . $new_file_name;
if(move_uploaded_file($_FILES['picture']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['picture']['name'])." has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
?>