Base64 for UIImages

Рейтинг: 0Ответов: 1Опубликовано: 09.02.2015

Добрый день.

Столкнулся с проблемой загрузки файла на севрер. Дело в том, что по заданию нужно использовать кодировку base64 и надо закодировать картинку.

- (NSString *)encodeToBase64String:(UIImage *)image
{
    return [UIImagePNGRepresentation(image)            base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

Кодируем, все стандартно. Потом формирую запрос.

+ (NSURLRequest *)feedbackUpload:(NSString *)photoName
                          photo:(NSString *)photoData
                                sessionId:(NSString *)sessionId
{
    if (IS_NULL_OR_EMPTY(photoName, photoData, sessionId))
        return nil;

    NSString * post = [NSString stringWithFormat:@"process=%@&type=%@&id_session=%@&nm_file=%@&vl_file=%@", @"fbupload", @"1", sessionId, photoName, photoData];

    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
    [request setURL:[NSURL URLWithString:kREST_RootUrl]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];

    return request;
}

Уже знаю о проблеме с кодировкой base64 и что он неправильно кодирует + превращая его в пробел. Но вот это application/x-www-form-urlencoded charset=utf-8 должно быть выровнять ситуацию.

Но я до сех пор не могу ничего сделать. Фотка битая.

Есть идеи?

Ответы

▲ 1Принят
NSString* post = [post stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];

Вот строка, которая решает все проблемы!