ios多图片上传

来源:互联网 发布:ftp yum 源安装 编辑:程序博客网 时间:2024/06/06 02:33

-(NSDictionary *)PostImagesToServer:(NSString *)strUrl dicPostParams:(NSMutableDictionary *)params dicImages:(NSMutableDictionary *) dicImages andImgName:(NSDictionary*)dicImgName

{

    

    

    //分界线的标识符

   NSString *TWITTERFON_FORM_BOUNDARY =@"AaB03x";

    //根据url初始化request

    //NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strUrl] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

    

//    NSURL *urlStr = [NSURL URLWithString:strUrl];

   NSURL* ur = [NSURLURLWithString:strUrl];

    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:ur];

    //分界线 --AaB03x

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

    //结束符 AaB03x--

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

    //要上传的图片

    UIImage *image;//=[params objectForKey:@"pic"];

    //得到图片的data

    //NSData* data = UIImagePNGRepresentation(image);

    //http body的字符串

    NSMutableString *body=[[NSMutableStringalloc]init];

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

   NSArray *keys= [paramsallKeys];

    

    //遍历keys

   for(int i=0;i<[keyscount];i++) {

        //得到当前key

       NSString *key=[keysobjectAtIndex:i];

        //如果key不是pic,说明value是字符类型,比如nameBoris

        //if(![key isEqualToString:@"pic"]) {

        //添加分界线,换行

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

        //添加字段名称,换2

        [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];

        //[body appendString:@"Content-Transfer-Encoding: 8bit"];

       //添加字段的值

        [bodyappendFormat:@"%@\r\n",[paramsobjectForKey:key]];

       //}

    }

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

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

    

    //声明myRequestData,用来放入http body

    NSMutableData *myRequestData=[NSMutableDatadata];

    //body字符串转化为UTF8格式的二进制

    [myRequestData appendData:[bodydataUsingEncoding:NSUTF8StringEncoding]];

    

    //循环加入上传图片

    keys = [dicImagesallKeys];

   for(int i =0; i< [keyscount] ; i++){

       //要上传的图片

        image = [dicImagesobjectForKey:[keysobjectAtIndex:i ]];

        //得到图片的data

       NSData* data = UIImageJPEGRepresentation(image,0.0);

              float f =1.0;

              while ([datalength] >500000 && f >=0.05) {

                  f = f -0.2;

                 data =UIImageJPEGRepresentation(image, f);

                 NSLog(@"IMG LENGHT 3:%uld",[datalength]);

               }

        

        NSMutableString *imgbody = [[NSMutableStringalloc]init];

        //此处循环添加图片文件

        //添加图片信息字段

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

        //[body appendFormat:[NSString stringWithFormat: @"Content-Disposition: form-data; name=\"File\"; filename=\"%@\"\r\n", [keys objectAtIndex:i]]];

        

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

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


        [imgbody appendFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@.jpg\"\r\n",  [keysobjectAtIndex:i],[dicImgNameobjectForKey:[keysobjectAtIndex:i ]]];

        //声明上传文件的格式

        [imgbody appendFormat:@"Content-Type: application/octet-stream; charset=utf-8\r\n\r\n"];

        

       NSLog(@"上传的图片:%@  %@", [keysobjectAtIndex:i], [dicImgNameobjectForKey:[keys objectAtIndex:i ]]);

        

        //body字符串转化为UTF8格式的二进制

        //[myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];

        [myRequestData appendData:[imgbodydataUsingEncoding:NSUTF8StringEncoding]];

        //imagedata加入

        [myRequestDataappendData:data];

        [myRequestData appendData:[@"\r\n"dataUsingEncoding:NSUTF8StringEncoding]];

    }

    //声明结束符:--AaB03x--

   NSString *end=[[NSStringalloc]initWithFormat:@"%@\r\n",endMPboundary];

    //加入结束符--AaB03x--

    [myRequestData appendData:[enddataUsingEncoding:NSUTF8StringEncoding]];

    

    //设置HTTPHeaderContent-Type的值

   NSString *content=[[NSStringalloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];

    //设置HTTPHeader

    [request setValue:contentforHTTPHeaderField:@"Content-Type"];

    //[request setValue:@"keep-alive" forHTTPHeaderField:@"connection"];

    //[request setValue:@"UTF-8" forHTTPHeaderField:@"Charsert"];

    //设置Content-Length

    [request setValue:[NSStringstringWithFormat:@"%lu", (unsignedlong)[myRequestDatalength]]forHTTPHeaderField:@"Content-Length"];

    //设置http body

    [requestsetHTTPBody:myRequestData];

    //http method

    [requestsetHTTPMethod:@"POST"];

    

    //建立连接,设置代理

    //NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    

    //设置接受responsedata

   NSData *mResponseData;

   NSError *err =nil;

    mResponseData = [NSURLConnectionsendSynchronousRequest:requestreturningResponse:nilerror:&err];

   NSDictionary* jsonBack;

   if(mResponseData ==nil){

        NSLog(@"err code : %@", [errlocalizedDescription]);

       return jsonBack;

    }

    jsonBack = [NSJSONSerializationJSONObjectWithData:mResponseDataoptions:NSJSONReadingMutableLeaveserror:&err];

     NSLog(@"jsonBack:%@",jsonBack);

    

//    res = [[NSString alloc] initWithData:mResponseData encoding:NSUTF8StringEncoding];

   /*

     if (conn) {

     mResponseData = [NSMutableData data];

     mResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&err];

     

     if(mResponseData == nil){

     NSLog(@"err code : %@", [err localizedDescription]);

     }

     res = [[NSString alloc] initWithData:mResponseData encoding:NSUTF8StringEncoding];

     }else{

     res = [[NSString alloc] init];

     }*/

   return jsonBack;

}


0 0
原创粉丝点击