1. 程式人生 > >iOS 使用AFNetworking實現多張圖片上傳

iOS 使用AFNetworking實現多張圖片上傳

#import "AFNetworking.h"


/**

 *  上傳帶圖片的內容,允許多張圖片上傳(URLPOST

 *

 *  @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:[UIImageclass]]) {

NSLog(@"images中第%d個元素不是UIImage物件",i+1);

        }

    }

AFHTTPSessionManager *manager = [AFHTTPSessionManagermanager];

//以下三項manager的屬性根據需要進行配置

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

//    manager.requestSerializer = [AFHTTPRequestSerializer serializer];


    manager.responseSerializer = [AFHTTPResponseSerializerserializer];

    [manager POST:url parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData_Nonnull formData) {

int i = 0;

//根據當前系統時間生成圖片名稱

NSDate *date = [NSDatedate];

NSDateFormatter *formatter = [[NSDateFormatteralloc]init];

        [formatter setDateFormat:@"yyyyMMdd"];

NSString *dateString = [formatter stringFromDate:date];

for (UIImage *image in images) {

NSString *fileName = [NSStringstringWithFormat:@"%@%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 = [[NSStringalloc] 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 ([selfisBlankString:array[i]]==YES){

                [array removeObjectAtIndex:i];

            }

        }

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

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

NSDictionary *dict = [NSJSONSerializationJSONObjectWithData:responseObject options:NSJSONReadingAllowFragmentserror:nil];

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

        succeedBlock(dict);

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

if (error) {

            failedBlock(error);

NSLog(@"%@",error);

        }

    }];

}