AFNetworking carga de files múltiples

Quiero upload algunas imágenes al server, así que uso AFNetWork para publicar los files. El código está aquí:

UIImage *image1 = [UIImage imageNamed:@"about_app"]; UIImage *image2 = [UIImage imageNamed:@"alter"]; NSArray *array = @[image1,image2]; __block int i = 0; NSMutableURLRequest *request = [[AFNetWorkSingleton shareInstance] multipartFormRequestWithMethod:@"POST" path:@"Mindex/getimg" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>formData){ for(UIImage *eachImage in array) { NSData *imageData = UIImageJPEGRepresentation(eachImage,0.5); [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i ] fileName:[NSString stringWithFormat:@"abc%d.jpg",i ] mimeType:@"image/jpeg"]; i++; } }]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){.....} 

¡Esto no es trabajo! Pero cuando uso el código siguiente para replace la statement "for" dentro del método multipartFormRequestWithMethod, ¡todo salió bien! pero si no puedo confirmar el recuento de la matriz de imágenes, debo usar la instrucción "for", ¿hay algún problema con mi código?

  [formData appendPartWithFileData:UIImageJPEGRepresentation([array objectAtIndex:0], 0.5) name:@"image1" fileName:@"image1.jpg" mimeType:@"image/jpeg"]; [formData appendPartWithFileData:UIImageJPEGRepresentation([array objectAtIndex:1], 0.5) name:@"image2" fileName:@"image2.jpg" mimeType:@"image/jpeg"]; 

Ponga la variable i dentro del bloque. También cambió el nombre del file de abc a file .

 UIImage *image1 = [UIImage imageNamed:@"about_app"]; UIImage *image2 = [UIImage imageNamed:@"alter"]; NSArray *array = @[image1,image2]; NSMutableURLRequest *request = [[AFNetWorkSingleton shareInstance] multipartFormRequestWithMethod:@"POST" path:@"Mindex/getimg" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>formData){ int i = 0; for(UIImage *eachImage in array) { NSData *imageData = UIImageJPEGRepresentation(eachImage,0.5); [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i ] fileName:[NSString stringWithFormat:@"file%d.jpg",i ] mimeType:@"image/jpeg"]; i++; } }]; 

simplemente cambie la syntax del ciclo for

  UIImage *image1 = [UIImage imageNamed:@"about_app"]; UIImage *image2 = [UIImage imageNamed:@"alter"]; NSArray *array = @[image1,image2]; NSMutableURLRequest *request = [[AFNetWorkSingleton shareInstance] multipartFormRequestWithMethod:@"POST" path:@"Mindex/getimg" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>formData){ for(int i=0;i<[array count];i++) { UIImage *eachImage = [array objectAtIndex:i]; NSData *imageData = UIImageJPEGRepresentation(eachImage,0.5); [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i ] fileName:[NSString stringWithFormat:@"abc%d.jpg",i ] mimeType:@"image/jpeg"]; } }]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){.....} 

Para cargar cualquier tipo de file al server, configure mimeType como -> file / *

  [formData appendPartWithFileData:Data name:@"keyName" fileName:@"yourFileName" mimeType:@"file/*"];