關於最新版AFNetworking(3.0)上傳多張圖片的問題


最新版的AF已經廢棄了很多以前的類,所以很多以前的方法都不能用了,當然最主要還是為了適應ipV6所做的更改。樓主最近正在寫多張圖片上傳,碰到了一些問題,解決之后直接封裝了一個方法,廢話有點多了,上代碼:

 

//上傳多張圖片

+ (void)requestWithUrl:(NSString *)url

       withPostedImages:(NSArray *)imagesArray

      WithSuccessBlock:(void (^)(NSArray * resultArray))successBlock

           WithNeebHub:(BOOL)needHub

              WithView:(UIView *)viewWithHub

              WithData:(NSDictionary *)dataDic

{

    if (imagesArray.count > 0) {

        

        //創建一個臨時的數組,用來存儲回調回來的結果

        NSMutableArray *temArray = [NSMutableArray array];

        

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

            UIImage *imageObj = imagesArray[i];

            //截取圖片

            NSData *imageData = UIImageJPEGRepresentation(imageObj, 0.5);

            

            AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

            

            manager.responseSerializer = [AFHTTPResponseSerializer serializer];

            

            // 訪問路徑

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

                

                // 上傳文件

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

                formatter.dateFormat = @"yyyyMMddHHmmss";

                NSString *str = [formatter stringFromDate:[NSDate date]];

                NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];

                

                [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/png"];

                

            } progress:^(NSProgress * _Nonnull uploadProgress) {

                

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

                NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];

                

                [temArray addObject:dic];

 

                //當所有圖片上傳成功后再將結果進行回調

                if (temArray.count == imagesArray.count) {

                    successBlock(temArray);

                }

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

                

            }];

        }

    }

}

 在將所有圖片上傳成功后,在進行回調,回調的是一個數組哦,這樣在上傳圖片的界面就可以拿到所有上傳圖片的id了。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM