mercredi 8 avril 2015

save image to mysql database base64 encode/decode ios

I am trying to save an image as a string to my database. this is how i encode it to base64 and post it to a php file.



UIImage *yourImage= [UIImage imageNamed:@"noimage"];
NSData *imageData = UIImagePNGRepresentation(yourImage);

NSString *string;

if ([imageData respondsToSelector:@selector(base64EncodedStringWithOptions:)]) {
NSLog(@"ios 7+");
string = [imageData base64EncodedStringWithOptions:kNilOptions]; // iOS 7+
} else {
string = [imageData base64Encoding]; // pre iOS7
}

@try {

NSString *post =[[NSString alloc] initWithFormat:@"id=%d&person_id=%@&image_string=%@",id,[person getpersonId],string];
NSLog(@"PostData: %@",post);

NSURL *url=[NSURL URLWithString:@"http://"];

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];


And this is how i retrieve it back.



@try {

NSString *post =[[NSString alloc] initWithFormat:@"id=%d&person_id=%@",id,[person getpersonId]];
NSLog(@"PostData: %@",post);

NSURL *url=[NSURL URLWithString:@"http:"];

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];

NSLog(@"Response code: %ld", (long)[response statusCode]);
if ([response statusCode] >=200 && [response statusCode] <300)
{
NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"Response ==> %@", responseData);

NSData *data;

if ([NSData instancesRespondToSelector:@selector(initWithBase64EncodedString:options:)]) {
data = [[NSData alloc] initWithBase64EncodedString:responseData options:kNilOptions]; // iOS 7+
NSLog(@"data ios 7 %@",data);
} else {
data = [[NSData alloc] initWithBase64Encoding:responseData]; // pre iOS7
}
NSLog(@"DATA%@",data);
UIImage *profImag = [UIImage imageWithData:data];
NSLog(@"%@",profImag);
[profileImage setImage:profImag];


when i convert it from string to NSData i get null. What i am doing wrong?


Aucun commentaire:

Enregistrer un commentaire