AFN上传多张图片到服务器

第一步//获取图片
  
    UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"添加照片" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
    
    UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        [actionSheet dismissViewControllerAnimated:YES completion:^{
            
            
            
        }];
    }];
    
    
    UIAlertAction *PhotoAlbum = [UIAlertAction actionWithTitle:@"从相册获取" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
       
        [self reloadImagesFromLibrary];
        
        
    }];
    
    UIAlertAction *camera = [UIAlertAction actionWithTitle:@"从摄像头获取" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
       
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
            
            NSArray *temp_MediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType];
            
            picker.mediaTypes = temp_MediaTypes;
            
            picker.delegate = self;
            
            picker.allowsEditing = YES;
            
        }
        
        
        [self presentViewController:picker animated:YES completion:^{
            
        }];
        
        
    }];
    
    [actionSheet addAction:PhotoAlbum];
    [actionSheet addAction:camera];
    [actionSheet addAction:cancel];
    
    
   [self presentViewController:actionSheet animated:YES completion:^{
       
   }];



//这个是调用摄像头的回调方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    
    [self dismissViewControllerAnimated:YES completion:nil];

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    
    [self.frontIDCard setImage:[image imageWithRenderingMode:1] forState:UIControlStateNormal];

    //因为要上传多张照片所以放到一个数组里 (要注意控制图片的尺寸和质量)
    [self.postImageArr addObject:[self image:image byScalingToSize:CGSizeMake(400, 800)]];
   
}

//这个是选取拍摄的照片的方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    
    [picker dismissViewControllerAnimated:YES completion:^{
        
    }];
}

//更改图片大小
- (UIImage *)image:(UIImage*)image byScalingToSize:(CGSize)targetSize {
    UIImage *sourceImage = image;
    UIImage *newImage = nil;
    
    UIGraphicsBeginImageContext(targetSize);
    
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = CGPointZero;
    thumbnailRect.size.width  = targetSize.width;
    thumbnailRect.size.height = targetSize.height;
    
    [sourceImage drawInRect:thumbnailRect];
    
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return newImage ;
}

//传图片流
- (void)postImages {
    

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
  
    [manager POST:Period parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
     {
         // 上传 多张图片
         for(NSInteger i = 0; i < self.postImageArr.count; i++) {
        
             
             NSData * imageData = UIImageJPEGRepresentation([self.postImageArr objectAtIndex: i], 0.5);
             // 上传的参数名
             
             NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
             formatter.dateFormat = @"yyyyMMddHHmmss";
             NSString *str = [formatter stringFromDate:[NSDate date]];
             NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];
             [formData appendPartWithFileData:imageData name:str fileName:fileName mimeType:@"image/jpeg"];
         }
     }
          success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         
         NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
         NSLog(@"完成 %@", result);
     }
          failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         NSLog(@"错误 %@", error.localizedDescription);
     }];
   
    
 }
转载出处 :http://blog.csdn.net/qq_31249697/article/details/50696784

猜你喜欢

转载自blog.csdn.net/samuelandkevin/article/details/51447344