iOS 使用AFNetworking实现多张图片上传


#import "AFNetworking.h"


/**

 *  上传带图片的内容,允许多张图片上传(URL)POST

 *

 *  @param url          传url

 *  @param images       要上传的图片数组(注意数组内容需是图片)

 *  @param parameter    图片数组对应的参数 可以为nil

 *  @param parameters   其他参数字典 可以为nil

 *  @param ratio        图片的压缩比例(0.0~1.0之间)

 *  @param succeedBlock 成功的回调

 *  @param failedBlock  失败的回调

 */

-(void)startMultiPartUploadTaskWithURL:(NSString *)url

                           imagesArray:(NSArray *)images

                     parameterOfimages:(NSString *)parameter

                        parametersDict:(NSDictionary *)parameters

                      compressionRatio:(float)ratio

                          succeedBlock:(void (^)(NSDictionary *dict))succeedBlock

                           failedBlock:(void (^)(NSError *error))failedBlock;


//–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––


/**

 *  多图上传

 */

-(void)startMultiPartUploadTaskWithURL:(NSString *)url imagesArray:(NSArray *)images parameterOfimages:(NSString *)parameter parametersDict:(NSDictionary *)parameters compressionRatio:(float)ratio succeedBlock:(void (^)(NSDictionary *dict))succeedBlock failedBlock:(void (^)(NSError *error))failedBlock{

    if (images.count == 0) {

        NSLog(@"图片数组计数为零");

        return;

    }

    for (int i = 0; i < images.count; i++) {

        if (![images[i] isKindOfClass:[UIImage class]]) {

            NSLog(@"images中第%d个元素不是UIImage对象",i+1);

        }

    }

    

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    //以下三项manager的属性根据需要进行配置


//    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html" @"text/json" @"text/javascript" @"text/plain"];

//    manager.requestSerializer = [AFHTTPRequestSerializer serializer];


    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    [manager POST:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

        int i = 0;

        //根据当前系统时间生成图片名称

        NSDate *date = [NSDate date];

        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

        [formatter setDateFormat:@"yyyy年MM月dd日"];

        NSString *dateString = [formatter stringFromDate:date];

        

        for (UIImage *image in images) {

            NSString *fileName = [NSString stringWithFormat:@"%@%d.png",dateString,i];

            NSData *imageData;

            if (ratio > 0.0f && ratio < 1.0f) {

                imageData = UIImageJPEGRepresentation(image, ratio);

            }else{

                imageData = UIImageJPEGRepresentation(image, 1.0f);

            }

            [formData appendPartWithFileData:imageData name:parameter fileName:fileName mimeType:@"image/jpg/png/jpeg"];

        }

    } progress:^(NSProgress * _Nonnull uploadProgress) {

        

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        NSString * newStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];


        

        NSLog(@"5959595959=%@=",newStr);

//        NSArray *array = [newStr componentsSeparatedByString:@".png"];

        NSMutableArray *array = [newStr componentsSeparatedByString:@"SystemFile"];

        NSLog(@"999999---%@",array);

        for (int i = 0; i<array.count; i++) {

            if ([self isBlankString:array[i]]==YES){

                [array removeObjectAtIndex:i];


            }

            

        }

         NSLog(@"999999--1111111-%@",array);

//        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];

        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];

        NSLog(@"common post json = %@", dict);

        

        succeedBlock(dict);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        if (error) {

            failedBlock(error);

            

            NSLog(@"%@",error);

        }

    }];

}





 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值