__weak typeof(&*self)weakSelf = self;
NSString *shopID = [[NSUserDefaults standardUserDefaults] stringForKey:kShopId];
NSMutableDictionary *paramDic = [NSMutableDictionary dictionary];
paramDic[@"activityId"] = _activityID;
paramDic[@"shopId"] = shopID;
//以上是除图片外的参数的设置
//分界线的标识符
NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
NSString * URLString = [NSString stringWithUTF8String:cHttpMethod[HTTP_COMMAND_ADD_ACTIViTYPHOTO]];
NSString *urlStr = [NSString stringWithFormat:@"%@?m=%@",URL_BASE,URLString];
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//分界线 --AaB03x
NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
//结束符 AaB03x--
NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
//http body的字符串
NSMutableString *body=[[NSMutableString alloc]init];
//参数的集合的所有key的集合
NSArray *keys= [paramDic allKeys];
//遍历keys
for(int i=0;i<[keys count];i++) {
//得到当前key
NSString *key=[keys objectAtIndex:i];
//如果key不是pic,说明value是字符类型,比如name:Boris
//if(![key isEqualToString:@"pic"]) {
//添加分界线,换行
[body appendFormat:@"%@\r\n",MPboundary];
//添加字段名称,换2行
[body appendFormat:@"Content-Disposition: form-data; name="%@"\r\n\r\n",key];
//[body appendString:@"Content-Transfer-Encoding: 8bit"];
//添加字段的值
[body appendFormat:@"%@\r\n",[paramDic objectForKey:key]];
//}
}
//声明myRequestData,用来放入http body
NSMutableData *myRequestData=[NSMutableData data];
//将body字符串转化为UTF8格式的二进制
[myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
//循环加入上传图片
for(int i = 0; i< [_tempImages count] ; i++){
//要上传的图片
UIImage *image = _tempImages[i];
//得到图片的data
NSData* data = UIImageJPEGRepresentation(image, 0.1);
NSMutableString *imgbody = [[NSMutableString alloc] init];
//此处循环添加图片文件
//添加图片信息字段
//声明pic字段,文件名为boris.png
//[body appendFormat:[NSString stringWithFormat: @"Content-Disposition: form-data; name="File"; filename="%@"\r\n", [keys objectAtIndex:i]]];
添加分界线,换行
[imgbody appendFormat:@"%@\r\n",MPboundary];
[imgbody appendFormat:@"Content-Disposition: form-data; name="File%d"; filename="%@.jpg"\r\n", i, [keys objectAtIndex:i]];
//声明上传文件的格式
[imgbody appendFormat:@"Content-Type: application/octet-stream; charset=utf-8\r\n\r\n"];
//将body字符串转化为UTF8格式的二进制
[myRequestData appendData:[imgbody dataUsingEncoding:NSUTF8StringEncoding]];
//将image的data加入
[myRequestData appendData:data];
[myRequestData appendData:[ @"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}
//声明结束符:--AaB03x--
NSString *end=[[NSString alloc]initWithFormat:@"%@\r\n",endMPboundary];
//加入结束符--AaB03x--
[myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
//设置HTTPHeader中Content-Type的值
NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
//设置HTTPHeader
[request setValue:content forHTTPHeaderField:@"Content-Type"];
//设置Content-Length
[request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
//设置http body
[request setHTTPBody:myRequestData];
//http method
[request setHTTPMethod:@"POST"];
[MBProgressHUD showMessag:@"正在上传图片" toView:self.view];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
dispatch_sync(dispatch_get_main_queue(), ^{
[MBProgressHUD hideAllHUDsForView:weakSelf.view animated:YES];
if (error) {
NSLog(@"error:%@",error);
}else{
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"result:%@",result);
[weakSelf.collectionView.mj_header beginRefreshing];
}
});
}];
[task resume];