AFNetworking实现多张图片上传

利用AFNetworking实现多张图片上传,比如要上传的参数是其他参数加一个图片数组如下:

- (void)sendComments {
 //上传的参数如下:
 NSDictionary *dic = @{@"eva.eva_goods_id":@(goodsId),
                          @"eva.eva_user_id":userId,
                          @"eva.eva_grade":@(_grade),
                          @"eva.eva_detail":commentText
                          @"photos":@[1.png,2.png]};
                          
 //这里我们需要将photos参数分离出来具体代码如下:
 NSDictionary *paramsDict = @{@"eva.eva_goods_id":@(goodsId),
                              @"eva.eva_user_id":userId,
                               @"eva.eva_grade":@(_grade),
                               @"eva.eva_detail":commentText};
                               
 NSMutableArray *imageArray = [NSMutableArray array];
//这里假设_selectedPhotos是从本地相册选取的图片,具体实现这里将不作说明了
if (_selectedPhotos.count > 0 ) {
        
        for (UIImage *image in _selectedPhotos) {
      
            NSData *imagedata = [self imageDataWithImage:image];
            [imageArray addObject:imagedata];
        }
    }
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:url parameters:paramsDict constructingBodyWithBlock:^(id  _Nonnull formData) {
        
        for (NSInteger i = 0; i < imageArray.count; i++) {
            
            NSData *picData = uploadParamArray[i];
            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
            formatter.dateFormat = @"yyyyMMddHHmmss";
            
            //文件名
            NSString *fileNmae = [NSString stringWithFormat:@"%@%ld.png",[formatter stringFromDate:[NSDate date]],(long)i];
            
            //其中name需要设置为图片上传的参数名pothos, mimeType是文件的类型
            [formData appendPartWithFileData:picData name:@"photo" fileName:fileNmae mimeType:@"image/png"];
        }
        
        
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        //上传成功后的回调
        
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        //上传失败        
    }];
}
   
 - (NSData *)imageDataWithImage:(UIImage *)image {
    
    NSData *data;
    
    if (UIImagePNGRepresentation(image) == nil) {
        
        data = UIImageJPEGRepresentation(image, 1);
        
    }else {
        
        data = UIImageJPEGRepresentation(image, 0.01);
    }
    
    return data;
}

你可能感兴趣的:(AFNetworking实现多张图片上传)