Отправка нескольких изображений с помощью AFNetworking

Я разрабатываю приложение для обмена сообщениями, и пользователи также могут отправлять друг другу изображения.
Когда пользователь отправляет более одного изображения, я отправляю их параллельно (Я не жду завершения загрузки первого перед отправкой второго)

До перехода к AFNetworkingмне удалось это сделать с помощью ASIFormDataRequest, и действительно, если я отправлял 2 изображения, то оба они передавались параллельно и успешно доставлялись другому пользователю.

Когда я пытаюсь сделать это с помощью AFNetworking, я получаю странное поведение.
Я попытаюсь описать случай, когда пользователь 1 также отправил два изображения пользователю 2:

  1. Пользователь 1 отправил изображение 1 -> все выглядит нормально, я вижу процесс загрузки.
  2. Затем пользователь 1 отправляет изображение 2 -> все еще выглядит нормально, я вижу процесс загрузки обоих изображений
  3. Загрузка изображения 1 завершена -> пользователь 2 получает поврежденное изображение, которое выглядит как комбинация изображений 1 и 2 вместе!
  4. Загрузка изображения2 завершена -> пользователь2 успешно получает изображение2

Вот как я отправляю изображение

- (void)sendImageMsgWithPath:(NSString *)path
                       image:(UIImage *)image
                     success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                     failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
                    progress:(void (^)(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress
{
    NSData *imageData = UIImageJPEGRepresentation(image, 0.5);

    // create the request

    NSURLRequest *request = [[AppClient sharedClient] multipartFormRequestWithMethod:@"POST" path:path parameters:nil constructingBodyWithBlock:^(id formData) 
                             {
                                 [formData appendPartWithFileData:imageData name:@"image_name" fileName:@"image_name.jpg" mimeType:@"image/jpeg"];
                             }];


    // create the operation

    AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];

    // set progress block

    [operation setUploadProgressBlock:progress];

    //set completion blocks

    [operation setCompletionBlockWithSuccess:success failure:failure];

    // set it to work in background

    [operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:nil];

    // add it to the operations queue

    [[AppClient sharedClient] enqueueHTTPRequestOperation:operation];
}

***путь для загрузки обоих изображений один и тот же:

path = @"FrontEnd?cmd=sendimage&fromuserid=3&touserid=1&"

он будет добавлен к базовому URL-адресу для создания полного URL-адреса:

@"http://somename.myftp.org:8080/web_proj/FrontEnd?cmd=sendimage&fromuserid=3&touserid=1"

Это изображения, которые я отправил:
изображение1
enter image description here

изображение2
enter image description here

поврежденное изображение
enter image description here

6
задан Marcos Gonzalez 9 June 2013 в 16:22
поделиться