首页 > 系统 > iOS > 正文

iOS通过http post上传图片

2020-07-26 03:25:39
字体:
来源:转载
供稿:网友

本文实例为大家分享了iOS通过http post上传图片的相关代码,供大家参考,具体内容如下

//ASIFormDataRequest方式 POST上传图片-(NSDictionary *)addPicWithDictionary:(NSDictionary *)sugestDic{NSDictionary *tempDic=nil;NSString *url=[NSString stringWithFormat:@"http://182.50.0.62:8095/xianServer/upload/uploadImage?clientType=mobile"];form = [[[ASIFormDataRequest alloc]initWithURL:[NSURL URLWithString:url]] autorelease];[form setTimeOutSeconds:60.0];form.delegate = self;//添加拍照图//分界线的标识符NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";//分界线 --AaB03xNSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];//结束符 AaB03x--NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];//添加拍照图片imageView.image=[UIImage imageNamed:@"btn_done_down@2x.png"];NSData* data = UIImagePNGRepresentation(imageView.image);NSLog(@"%@",data);//http body的字符串NSMutableString *body=[[NSMutableString alloc]init];//参数的集合的所有key的集合NSArray *keys= [sugestDic allKeys];//遍历keysfor(int i=0;i<[keys count];i++){//得到当前keyNSString *key=[keys objectAtIndex:i];//如果key不是pic,说明value是字符类型,比如name:Borisif(![key isEqualToString:@"files"]){//添加分界线,换行[body appendFormat:@"%@/r/n",MPboundary];//添加字段名称,换2行[body appendFormat:@"Content-Disposition: form-data; name=/"%@/"/r/n/r/n",key];//添加字段的值[body appendFormat:@"%@/r/n",[sugestDic objectForKey:key]];}}if (imageView.image) {////添加分界线,换行[body appendFormat:@"%@/r/n",MPboundary];//声明pic字段,文件名为boris.png[body appendFormat:@"Content-Disposition: form-data; name=/"files/"; filename=/"boris.png/"/r/n"];//声明上传文件的格式[body appendFormat:@"Content-Type: image/png/r/n/r/n"];}//声明结束符:--AaB03x--NSString *end=[[NSString alloc]initWithFormat:@"/r/n%@",endMPboundary];//声明myRequestData,用来放入http bodyNSMutableData *myRequestData=[NSMutableData data];//将body字符串转化为UTF8格式的二进制[myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];//将image的data加入[myRequestData appendData:data];//加入结束符--AaB03x--[myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];//设置HTTPHeader中Content-Type的值NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];[form addRequestHeader:@"Content-Type" value:content];[form addRequestHeader:@"Content-Length" value:[NSString stringWithFormat:@"%d", [myRequestData length]]];[form setRequestMethod:@"POST"];[form startAsynchronous];[form setDidFailSelector:@selector(requestBeFailed:)];[form setDidFinishSelector:@selector(requestBeFinished:)];// 解析取得的结果return tempDic;}

以上就是本文的全部内容,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表