数据+文件混合上传
来源:互联网 发布:豆瓣阅读知乎 编辑:程序博客网 时间:2024/04/28 07:37
-(void)PostImagesToServer:(NSString *) strUrl jsonPostParams:(NSString *)params object:(id) object{ //分界线的标识符 NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x"; //根据url初始化request NSURL *url = [NSURL URLWithString:strUrl]; 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]; //添加分界线,换行 [body appendFormat:@"%@\r\n",MPboundary]; //添加字段名称,换2行 [body appendFormat:@"Content-Disposition: form-data; name=\"credit_pre_pot_sum\"\r\n\r\n"]; //添加字段的值 [body appendFormat:@"%@\r\n",params]; //声明myRequestData,用来放入http body NSMutableData *myRequestData=[NSMutableData data]; //将body字符串转化为UTF8格式的二进制 [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]]; //判断类型(NSData/NSDictionary) if([object isKindOfClass:[NSData class]]){ NSData *dicImage = object; NSMutableString *imgbody = [[NSMutableString alloc] init]; //此处循环添加图片文件 ////添加分界线,换行 [imgbody appendFormat:@"%@\r\n",MPboundary]; [imgbody appendFormat:@"Content-Disposition: form-data; name=\"file_data\"; filename=\"哈哈.jpg\"\r\n"]; //声明上传文件的格式 [imgbody appendFormat:@"Content-Type: image/jpeg; charset=utf-8\r\n\r\n"]; //将body字符串转化为UTF8格式的二进制 [myRequestData appendData:[imgbody dataUsingEncoding:NSUTF8StringEncoding]]; //将image的data加入 [myRequestData appendData:dicImage]; [myRequestData appendData:[ @"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; } else if ([object isKindOfClass:[NSString class]]){ NSString *jsonString = (NSString *)object; //http body的字符串 NSMutableString *body=[[NSMutableString alloc]init]; //添加分界线,换行 [body appendFormat:@"%@\r\n",MPboundary]; //添加字段名称,换2行 [body appendFormat:@"Content-Disposition: form-data; name=\"file_data\"\r\n\r\n"]; //添加字段的值 [body appendFormat:@"%@\r\n",jsonString]; //将body字符串转化为UTF8格式的二进制 [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]]; } else{ NSDictionary *dic = (NSDictionary *)object; //http body的字符串 NSMutableString *body=[[NSMutableString alloc]init]; //添加分界线,换行 [body appendFormat:@"%@\r\n",MPboundary]; //添加字段名称,换2行 [body appendFormat:@"Content-Disposition: form-data; name=\"file_data\"\r\n\r\n"]; //添加字段的值 CJSONSerializer *serializer = [[CJSONSerializer alloc] init]; NSString *jsonString = [serializer serializeDictionary:dic]; [body appendFormat:@"%@\r\n",jsonString]; //将body字符串转化为UTF8格式的二进制 [myRequestData appendData:[body 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"]; //设置接受请求头信息 [request setValue:cmd forHTTPHeaderField:@"cmd"]; [request setValue:ppc forHTTPHeaderField:@"ppc"]; [request setValue:@"01" forHTTPHeaderField:@"dev"]; [request setValue:@"1.0" forHTTPHeaderField:@"protocol-ver"]; [request setValue:@"2013112599" forHTTPHeaderField:@"time-stamp"]; [request setValue:@"no1" forHTTPHeaderField:@"msg-id"]; [request setValue:@"hdyjhbhuyjhdyjhbhuyjhdyjhbhuyjqq" forHTTPHeaderField:@"md"]; if(!_session){ self.session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:nil]; self.session.sessionDescription = @"upLoad"; } self.upLoadTask = [_session uploadTaskWithRequest:request fromData:myRequestData completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if(error){ NSLog(@"---请求出错%@",error.localizedDescription); } else{ NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; NSInteger status = [httpResponse statusCode]; if(status == 200){ NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; NSLog(@"请求成功----%@",dictionary); //请求成功 NSLog(@"---response:%@",response); NSString *asd = [httpResponse.allHeaderFields objectForKey:@"h-msg"]; NSString *decodedString = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)asd, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)); NSLog(@"---h_msg:%@",decodedString); } } }]; [self.upLoadTask resume];}
实现多数据+多图片混合上传到话,写个for语句就好比如:
for(int i=0;i<图片流数组.count;i++){ NSData *dicImage = (NSData *)[[图片流数组] objectAtIndex:i]; [imgbody appendFormat:@"%@\r\n",MPboundary]; [imgbody appendFormat:@"Content-Disposition: form-data; name=\"file_data\"; filename=\"哈哈.jpg\"\r\n"]; //声明上传文件的格式 [imgbody appendFormat:@"Content-Type: image/jpeg; charset=utf-8\r\n\r\n"]; //将body字符串转化为UTF8格式的二进制 [myRequestData appendData:[imgbody dataUsingEncoding:NSUTF8StringEncoding]]; //将image的data加入 [myRequestData appendData:dicImage]; [myRequestData appendData:[ @"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; }
0 0
- 数据+文件混合上传
- zk + struts2混合 文件上传的问题
- Hybrid--混合开发-文件上传包括android+服务器--3
- spring mvc表单多文件混合异步上传
- 文件上传与数据导入
- 文件上传及数据入库
- ios 文件上传, post数据
- ios 文件上传, post数据
- ios 文件上传, post数据
- SpringMVC数据校验、文件上传
- iOS 文件上传 post数据
- 数据校验,单文件上传
- 数据校验,单文件上传
- TCP传输数据。上传文件
- 用JAVA处理文本与二进制数据混合大文件
- nodejs使用multer中间件上传混合表单提交(文件和非文件普通文本域)
- 上传Excel文件并导入到数据
- 客户端上传文件&服务器端保存数据
- [FineReport]参数面板之下拉框及下拉复选框
- java 之如何创建单实例
- sql server2012镜像可用性解决办法
- Linux ifconfig命令详解
- linux 下 安装程序
- 数据+文件混合上传
- mysql 导出数据的时候不锁表
- iOS——沙盒的读写方法
- iOS开发学习笔记-UIScrollView的用法
- 更上一层楼:国外30个优秀的UI/UX在线学习网站
- 树莓派调大linux系统音量(命令行)
- Android API Guides——简介(一)
- 浏览器安全 -原理 时序 Render DOM树构建
- shell中执行一个字符串命令的方法