关于使用http请求上传图片到服务器

来源:互联网 发布:张居正大传 知乎 编辑:程序博客网 时间:2024/05/11 18:04

       

    NSMutableURLRequest* urlRequest=[[NSMutableURLRequestalloc]initWithURL:url cachePolicy:NSURLRequestReloadRevalidatingCacheDatatimeoutInterval:40];

    boundary =@"0xKhTmLbOuNdArY";

    NSString* contentType= [NSStringstringWithFormat:@"multipart/form-data;boundary=%@",boundary];

    [urlRequest setValue:contentType forHTTPHeaderField:@"Content-Type"];

    

    NSMutableData* body =[NSMutableDatadata];

    [body appendData:[[NSStringstringWithFormat:@"\n--%@\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:[[NSStringstringWithFormat:@"Content-Disposition:form-data;name='PARAM';value='%@'\n\n",paramStr]dataUsingEncoding:NSUTF8StringEncoding]];

  // 具体的上传文本数据 

    if (self.topicType ==1) {

        [body appendData:[[NSStringstringWithFormat:@"{\"sid\":\"%@\",\"Content\":\"%@\"}",sid,text]dataUsingEncoding:NSUTF8StringEncoding]];

    }else if (self.topicType ==2){

        [body appendData:[[NSStringstringWithFormat:@"{\"sid\":\"%@\",\"Content\":\"%@\",\"Topic\":\"%@\"}",sid,text,num]dataUsingEncoding:NSUTF8StringEncoding]];

    }

    [body appendData:[[NSStringstringWithFormat:@"\n--%@\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];

    //第二段

    int imageTag=0;

   

    //  图片为多张时

    //将字典排序不然图片顺序会乱

    NSArray* array =dic2.allKeys;

    array =[array sortedArrayUsingComparator:^(id obj1 ,id obj2){

        NSComparisonResult result = [obj1 compare:obj2];

        return result==NSOrderedDescending;

    }];


    for (int i=0; i< array.count; i++) {

        NSString* key =[array objectAtIndex:i];

        id value =[dic2 objectForKey:key];


        if ([value isKindOfClass:[UIImageclass]]) {

            UIImage* im =[dic2 objectForKey:key];

            //  对图片进行质量压缩

            NSData* dataImg=UIImageJPEGRepresentation(im,1);

            if (dataImg.length >100*1024) {

                dataImg =UIImageJPEGRepresentation(im,.08);

            }else if(dataImg.length >50*1024 && dataImg.length <100 *1024){

                dataImg =UIImageJPEGRepresentation(im,0.3);

            }else{

                

            }

            [body appendData:[[NSStringstringWithFormat:@"\n--%@\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];

            [body appendData:[[NSStringstringWithFormat:@"Content-Disposition:form-data;name='userfile_%d';filename='userfile.jpg'\n",imageTag]dataUsingEncoding:NSUTF8StringEncoding]];

            imageTag++;

             [body appendData:[[NSStringstringWithFormat:@"Content-Type:image/jpg\n\n"]dataUsingEncoding:NSUTF8StringEncoding]];

            [body appendData:dataImg];

            [body appendData:[[NSStringstringWithFormat:@"\n--%@--\n",boundary]dataUsingEncoding:NSUTF8StringEncoding]];


        }

    }


    

    [urlRequest setHTTPMethod:@"POST"];

    [urlRequest setHTTPBody:body];

    NSLog(@"------上传数据大小---%d----",body.length);

    [NSURLConnectionconnectionWithRequest:urlRequest delegate:self];

0 0