본문 바로가기

Mac&iOS

큰 NSData를 Base64로 인코딩된 스트링으로 만들었는데 서버에서 복호화를 못한다면?

일단 이미지데이터를 NSData로 바꾼 다음 서버로 보내기 위해 Base64로 인코딩된 스트링을 만들어 주었다. 


         UIImage *testImage = [UIImage imageNamed:@"test.png"];

        NSData *imageData = UIImagePNGRepresentation(testImage);

        NSString *base64EncodedImageString = [imageData base64EncodedStringWithOptions:0];

        

        NSMutableData* base64DecodedImageData = [[NSMutableData alloc] initWithBase64EncodedString:base64EncodedImageString options:0];

        NSLog(@"base64DecodedImageData = %@", base64DecodedImageData);


테스트를 위해서 base64DecodedImageData 를 찍어봤으나 예상과 다르게 nil이 나왔다.


이 경우 옵션을 인코딩할 때 옵션을 줘야 했었다.


         UIImage *testImage = [UIImage imageNamed:@"test.png"];

        NSData *imageData = UIImagePNGRepresentation(testImage);

        NSString *base64EncodedImageString = [imageData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

        

        NSMutableData* base64DecodedImageData = [[NSMutableData alloc] initWithBase64EncodedString:base64EncodedImageString options:NSDataBase64DecodingIgnoreUnknownCharacters];

        NSLog(@"base64DecodedImageData = %@", base64DecodedImageData);


단, 여기에서 사용한 api들은 iOS 7 이상에서만 사용 가능하다.