美文网首页
NSMutableURLRequest 上传图片

NSMutableURLRequest 上传图片

作者: 光芒_平常心 | 来源:发表于2020-12-21 11:49 被阅读0次

    - (void)postImage:(UIImage *)_image

     {

         //分界线的标识符

         NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";

         NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:BaseURL(@"http://api.gaokao.715083.com/open/djs/uploadimg.do") cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

         //分界线 --AaB03x

         NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];

         //结束符 AaB03x--

         NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];

         //要上传的图片

         UIImage *image= _image;

         //得到图片的data

         NSData* data = UIImageJPEGRepresentation(image, 0.5);

         //http body的字符串

         NSMutableString *body=[[NSMutableString alloc]init];

         //参数的集合的所有key的集合

         NSDictionary *param = @{};

         NSArray *keys = [param 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 appendFormat:@"%@\r\n",[param objectForKey:key]];

             }

         }

         ////添加分界线,换行

         [body appendFormat:@"%@\r\n",MPboundary];

         //声明pic字段,文件名为boris.png

         [body appendFormat:@"Content-Disposition: form-data; name=\"pic\"; 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 body

         NSMutableData *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];

         //设置HTTPHeader

         [request setValue:content forHTTPHeaderField:@"Content-Type"];

         //设置Content-Length

         [request setValue:[NSString stringWithFormat:@"%d", [myRequestData length]] forHTTPHeaderField:@"Content-Length"];

         //设置http body

         [request setHTTPBody:myRequestData];

         //http method

         [request setHTTPMethod:@"POST"];

         //建立连接,设置代理

         [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

             if (connectionError) {

             }else{

                  NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

                 NSString * string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

                 NSLog(@"上传成功%@  %@  %@",response,string,dic);

             }

         }];

     }

    相关文章

      网友评论

          本文标题:NSMutableURLRequest 上传图片

          本文链接:https://www.haomeiwen.com/subject/xarrnktx.html