POST с UIImage

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

Добрый день.

Сегодня столкнулся в проблемой, картинка не хочет идти на сервер.

UIImage *image = [[UIImage alloc] init];
image = [info objectForKey: @"UIImagePickerControllerOriginalImage"];

NSData* imageData = UIImageJPEGRepresentation(image, 0.7);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSDictionary *parameters = @{@"size": @([imageData length])};
NSString* URL = [NSString stringWithFormat:@"%@process=%@&type=%@&id_session=%@&nm_file=%@", kREST_RootUrl, @"fbupload", @"1", self.accountDetails.sessionId, @"Photo.png"];


[manager POST:URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    
    [formData appendPartWithFileData:imageData name:@"vl_file=" fileName:@"filename.JPEG" mimeType:@"image/JPEG"];
    
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    
    NSLog(@"123 %@", responseObject);
    
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    
    NSLog(@"123 %@", error);
    [photoArray removeAllObjects];
    
}];

[picker dismissViewControllerAnimated:YES completion:nil];

Вот как я это делаю. В Гайде по APi дано это:

alt text

Скажите, что я делаю не так?

Ответы

▲ 2Принят

Рабочий код с текущего проекта:

+ (AFHTTPRequestOperation *)postFormDataWithImage:(UIImage *)image URLString:(NSString *)URLString parameters:(NSDictionary *)parameters success:(SuccessBlock)success failure:(FailureBlock)failure
{
    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:kServerURLAddress]];
    manager.requestSerializer = [AFHTTPRequestSerializer serializer];
    [manager.requestSerializer setValue:kAccept forHTTPHeaderField:@"Accept"];
    [manager.requestSerializer setValue:kAuthKey forHTTPHeaderField:@"Authorization"];

    manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/problem+json"];
    manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/hal+json"];

    NSData *imageData = UIImageJPEGRepresentation(image, 1.0f);

    AFHTTPRequestOperation *uploadOperation = [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

        if (imageData)
        {
            [formData appendPartWithFileData:imageData name:@"picture" fileName:@"newimage.jpg" mimeType:@"image/jpeg"];
        }
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {

        id JSON = responseObject;
        if (success)
        {
            success(JSON);
        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        if (failure)
        {
            failure(error);
        }
    }];

    return uploadOperation;
}

Хедеры и mime-типы установите на свое усмотрение.