
NSURLSessionUploadTask多图片上传
使用NSURLSessionUploadTask实现多图片上传, 图片N张, 参数字典一个,代码如下:
typedef void (^SuccessBlock) (id responder);
typedef void (^ErrorBlock) (id errorCode);
#define Kboundary @”—-anycharisok”
#define kDictIsEmpty(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0)
-
(void)CRPOSTUploadtWithRequestUrl:(NSString )urlStr
withParameter:(NSDictionary )parameter
withImageArray:(NSArray)imageArray
WithReturnValueBlock:(SuccessBlock)successBlock
errorCodeBlock:(ErrorBlock)errorBlock {
NSURLSession session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:nil delegateQueue:[NSOperationQueue mainQueue]];
NSMutableURLRequest request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
NSString headerStr = [NSString stringWithFormat:@”multipart/form-data;boundary=%@”,Kboundary];
[request setValue:headerStr forHTTPHeaderField:@”Content-Type”];
[request setHTTPMethod:@”POST”];
[request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
[request setTimeoutInterval:20];
NSData data = [self getBodyDataWithParameter:parameter WithArray:imageArray];
NSURLSessionUploadTask uploadTask = [session uploadTaskWithRequest:request fromData:data completionHandler:^(NSData data, NSURLResponse response, NSError error) {
if (!error && response != nil) {
NSDictionary dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
if (!kDictIsEmpty(dict)) {
dispatch_async(dispatch_get_main_queue(), ^{
successBlock(dict);
});
}
}else{
dispatch_async(dispatch_get_main_queue(), ^{
errorBlock(error);
});
}
}];
[uploadTask resume];
} -
(NSData )getBodyDataWithParameter:(NSDictionary )parameter WithArray:(NSArray
)imageArray {
NSMutableData myData = [NSMutableData data];
NSMutableString body=[[NSMutableString alloc]init];
[body appendFormat:@”–%@rn”,Kboundary];
[body appendFormat:@”Content-Disposition: form-data; name=%@rnrn”,@”inputStr”];
NSData bodyData = [NSJSONSerialization dataWithJSONObject:parameter options:NSJSONWritingPrettyPrinted error:nil];
NSString *cargos = [[NSString alloc] initWithData:bodyData encoding:NSUTF8StringEncoding];
[body appendFormat:@”%@”,cargos];
[body appendFormat:@”rn”];
[myData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
for (int i = 0; i < imageArray.count; i++) {
NSMutableString imgbody = [[NSMutableString alloc] init];
[imgbody appendFormat:@”–%@rn”,Kboundary];
[imgbody appendFormat:@”Content-Disposition: form-data; name=”file%d”; filename=”%@.png”rn”,i,[self uuidString]];
[imgbody appendFormat:@”Content-Type: image/png; charset=utf-8rnrn”];
[myData appendData:[imgbody dataUsingEncoding:NSUTF8StringEncoding]];
NSData data = [NSData data];
data = UIImageJPEGRepresentation(imageArray[i], 1.0f);
NSString base64Encoded = [data base64EncodedStringWithOptions:0];
NSData dataBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
[myData appendData:dataBase64String];
[myData appendData:[@”rn” dataUsingEncoding:NSUTF8StringEncoding]];
}
[myData appendData:[[NSString stringWithFormat:@”–%@–rn”,Kboundary] dataUsingEncoding:NSUTF8StringEncoding]];
return [myData copy];
}




近期评论