Enviar más de una image con AFNetworking

Estoy desarrollando una aplicación de postría y los usuarios también pueden enviar fotos entre sí.
Cuando un usuario envía más de una image, los envío en paralelo (no espero que el primero termine de cargar antes de enviar el segundo)

Antes de pasar a AFNetworking , conseguí hacerlo con ASIFormDataRequest , y de hecho, si envié 2 imágenes, ambas se transmitieron en paralelo y se entregaron con éxito al otro usuario.

Cuando trato de hacer esto con AFNetworking, obtengo un comportamiento extraño.
Trataré de describir el caso en que user1 envió dos imágenes también user2:

  1. Usuario1 enviar image1 -> todo está bien, puedo ver el progreso de la carga.
  2. User1 luego envía image2 -> todavía se ve bien, puedo ver el progreso de la carga de ambas imágenes
  3. La carga de image1 ha finalizado -> user2 obtiene una image dañada que parece una combinación de image1 e image2 juntos.
  4. La carga de image2 ha finalizado -> user2 obtiene image2 con éxito

Así es como envío una image

 - (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 shanetworkingClient] multipartFormRequestWithMethod:@"POST" path:path parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> 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 shanetworkingClient] enqueueHTTPRequestOperation:operation]; } 

*** la ruta para ambas cargas de imágenes es la misma:

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

se agregará a baseURL para crear la URL coplete:

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

Estas son las imágenes que envié:
image1
introduzca la descripción de la imagen aquí

image2
introduzca la descripción de la imagen aquí

image corrupta
introduzca la descripción de la imagen aquí

Utilice un método multipartFormRequest para ese uso a continuación:

 - (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters constructingBodyWithBlock:(void (^)(id <AFMultipartFormDataProxy>formData))block; 

Por ejemplo así:

  NSURLRequest* request = [[YourHTTPClient shanetworkingHTTPClient] multipartFormRequestWithMethod:@"POST" path:path parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { [formData appendPartWithFileData:data1 name:@"image1" fileName:@"image1.jpg" mimeType:@"image/jpeg"]; [formData appendPartWithFileData:data2 name:@"image2" fileName:@"image2.jpg" mimeType:@"image/jpeg"]; } }]; 

¿Cómo estás creando los objects UIImage que pasan a tu método sendImageMsgWithPath:? ¿Estás creando usando imageWithData: (o similar)? Si es así, he visto problemas como este al intentar reutilizar un NSMutableData. Parece que incluso después de crear el UIImage, el subsistema necesita leer esos datos más adelante. Y si ya ha reutilizado ese NSMutableData, la image se dañará.

Si este es el caso, le recomiendo que utilice un NSMutableData nuevo para crear cada UIImage.