最新版的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了。。。。