if (parameters) {
        
        int genderNumber = 1;
        self.token = loginToken;
        self.personPK = kidPK;
        self.personName = personNameL;
        self.personNickName = nickNameL;
        self.gender = genderL;
        self.birthday = birthdayL;
        self.imageData = imageL;
        self.imageName = imageNameL;
        if ([self.gender isEqualToString:@"女"]) {
            
            genderNumber = 2;
        }
        
        [parameters setValue:self.token forKey:@"token"];
        [parameters setValue:self.personPK forKey:@"personPk"];
        [parameters setValue:self.personName forKey:@"person.name"];
        [parameters setValue:self.personNickName forKey:@"person.nickname"];
        [parameters setValue:[NSString stringWithFormat:@"%d", genderNumber] forKey:@"person.gender"];
        [parameters setValue:self.birthday forKey:@"birthday"];
        [parameters setValue:self.personNickName forKey:@"turFileFileName"];
        //[parameters setValue:image forKey:@"turFile"];
        
        
    }
    
    self.LoadStatus = LOADING;
    self.strURL = tmp;
    NSLog(@"the url is %@",self.strURL);
    self.activeDownload = [NSMutableData data];
    
    
    //分界线的标识符
    NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
    //根据url初始化request
    NSMutableURLRequest* requestL = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.strURL]
                                                            cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                        timeoutInterval:30];
    //分界线 --AaB03x
    NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
    //结束符 AaB03x--
    NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
    //得到图片的data
    // self.imageData = UIImagePNGRepresentation(image);
    //http body的字符串
    NSMutableString *body=[[NSMutableString alloc]init];
    //参数的集合的所有key的集合
    NSArray *keys= [parameters allKeys];
    
    //遍历keys  注意这个除去了data类型只是包含了string类型的
    for(int i=0;i<[keys count];i++)
    {
        //得到当前key
        NSString *key=[keys objectAtIndex:i];
        //如果key不是pic,说明value是字符类型,比如name:Boris
        //添加分界线,换行
        [body appendFormat:@"%@\r\n",MPboundary];
        //添加字段名称,换2行
        [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];
        //添加字段的值
        [body appendFormat:@"%@\r\n",[parameters objectForKey:key]];
        
    }

//注意这里的turFile其实就是要上传的file的字段名字
    ////添加分界线,换行
    [body appendFormat:@"%@\r\n",MPboundary];
    //声明pic字段,文件名为boris.png
    [body appendFormat:@"Content-Disposition: form-data; name=\"turFile\"; filename=\"boris.jpg\"\r\n"];
    //声明上传文件的格式
    [body appendFormat:@"Content-Type: image/jpeg\r\n\r\n"]; //这里因为之前压缩生成的是jpg类型的图片所以需要表明jpeg,如果是png就是png
    
    //声明结束符:--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:self.imageData];
    //加入结束符--AaB03x--
    [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
    
    //设置HTTPHeader中Content-Type的值
    NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
    //设置HTTPHeader
    [requestL setValue:content forHTTPHeaderField:@"Content-Type"];
    //设置Content-Length
    [requestL setValue:[NSString stringWithFormat:@"%d", [myRequestData length]] forHTTPHeaderField:@"Content-Length"];
    //设置http body
    [requestL setHTTPBody:myRequestData];
    //http method
    [requestL setHTTPMethod:@"POST"];
    
    //建立连接,设置代理
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:requestL delegate:self];
    self.loadConnection = conn;
    [conn release];
    
    if (self.loadConnection != nil)
    {
        [self.loadConnection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    }

压缩的方法实现:

-(void)compraseImage
{
    UIImage *largeImage = self.pictureViewUpload.image;
    
    double compressionRatio = 1;
    int resizeAttempts = 5;
    
    NSData * imgData = UIImageJPEGRepresentation(largeImage,compressionRatio);
    
    //NSLog(@"Starting Size: %i", [imgData length]);
    
    //Trying to push it below around about 0.4 meg
    while ([imgData length] > 400000 && resizeAttempts > 0) {
        resizeAttempts -= 1;
        
        //NSLog(@"Image was bigger than 400000 Bytes. Resizing.");
        //NSLog(@"%i Attempts Remaining",resizeAttempts);
        
        //Increase the compression amount
        compressionRatio = compressionRatio*0.5;
        //NSLog(@"compressionRatio %f",compressionRatio);
        //Test size before compression
        //NSLog(@"Current Size: %i",[imgData length]);
        imgData = UIImageJPEGRepresentation(largeImage,compressionRatio);
        
        //Test size after compression
        //NSLog(@"New Size: %i",[imgData length]);
    }
    
    //Set image by comprssed version
    //self.pictureView.image = [UIImage imageWithData:imgData];
    
    //Check how big the image is now its been compressed and put into the UIImageView
    
    // *** I made Change here, you were again storing it with Highest Resolution ***
    NSData *endData = UIImageJPEGRepresentation(largeImage,compressionRatio);
    //NSLog(@"Ending Size: %i", [endData length]);
    
    /* NSString *path = [self createPath:@"myImage.jpg"];
     NSLog(@"%@",path);
     [endData writeToFile:path atomically:YES];*/
    
    [self startUploadingRequestWithData:endData andImage:self.pictureViewUpload.image];
}

ios使用http来上传图片实现方法的更多相关文章

  1. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

  2. iOS开发 GET、POST请求方法(NSURLConnection篇)

    Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...

  3. IOS中图片拉伸技巧与方法总结(转载)

    以下内容转载自:http://my.oschina.net/u/2340880/blog/403996 IOS中图片拉伸技巧与方法总结 一.了解几个图像拉伸的函数和方法 1.直接拉伸法 简单暴力,却是 ...

  4. iOS——浅谈iOS中三种生成随机数方法

    ios 有如下三种随机数方法:

  5. iOS项目的完整重命名方法图文教程

    原文链接:http://www.cocoachina.com/ios/20150104/10824.html iOS项目的完整重命名方法图文教程 前言:在iOS开发中,有时候想改一下项目的名字,都会遇 ...

  6. iOS开发中的Html解析方法

    iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...

  7. iOS开发 GET、POST请求方法:NSURLSession篇

    NSURLConnection,在iOS 9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: iOS开发 GET.POST请求方法(NSURLConnectio ...

  8. iOS拨打电话(三种方法)

    iOS拨打电话(三种方法)  查了很多地方的关于iOS程序拨打电话,大都不全,今天我总结了三种方法,各有不同,拿来给大家分享,希望给大家有所帮助 1,这种方法,拨打完电话回不到原来的应用,会停留在通讯 ...

  9. iOS微信实现第三方登录的方法

    这篇文章主要介绍了iOS微信第三方登录实现的全过程,一步一步告诉大家iOS微信实现第三方登录的方法,感兴趣的小伙伴们可以参考一下   一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2 ...

随机推荐

  1. jenkins执行构建并查看结果

    继完成构建项目配置http://www.cnblogs.com/yajing-zh/p/5111060.html后,则要执行构建. 回到jenkins主页之后,我们看到一个新建的项目显示出来: 点击进 ...

  2. 1512 Monkey King

    Monkey King Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  3. CodeForces 543D 树形DP Road Improvement

    题意: 有一颗树,每条边是好边或者是坏边,对于一个节点为x,如果任意一个点到x的路径上的坏边不超过1条,那么这样的方案是合法的,求所有合法的方案数. 对于n个所有可能的x,输出n个答案. 分析: 题解 ...

  4. mysql中的存储引擎

    MySQL中常用的几种存储引擎:innoDB.bdb.myisam.memory以及这几个引擎的讲解: InnoDB存储引擎: (1) innodb存储引擎该mysql表提供了事务,回滚以及系统崩溃修 ...

  5. 《完美应用Ubuntu》第3版 何晓龙 著

    系统篇 用好Ubuntu掌握这些就够了 第1章 Ubuntu的进化 1.1 GNU/Linux的历史和文化 1.1.1 GNU/Linux是Linux的全称 1.1.2 Linux的诞生 1.2 Li ...

  6. 缓存淘汰算法之FIFO

    前段时间去网易面试,被这个问题卡住,先做总结如下: 常用缓存淘汰算法 FIFO类:First In First Out,先进先出.判断被存储的时间,离目前最远的数据优先被淘汰. LRU类:Least ...

  7. GloVe词分布式表示

    GloVe 模型介绍 下面的内容主要来自https://blog.csdn.net/u014665013/article/details/79642083 GloVe的推导 GloVe是基于共现信息来 ...

  8. [python测试框架] http接口测试框架

    https://testerhome.com/topics/5631 Http 接口测试框架 (思路 + 实现中 + 开源 + 可能难产) Http 接口测试框架疑问解答 Fiddler 保存会话 ( ...

  9. javascript学习笔记 - 面向对象 理解对象

    ECMAScript 中有两种属性:数据属性和访问器属性 一 属性类型 1.数据属性.数据属性有4个描述其行为的特性 [[Configurable]]表示能否通过delete删除属性从而重新定义属性: ...

  10. 5款工具助你写出更好的Java代码

    1.FindBugs 顾名思义,FindBugs是一款帮助开发者发现bug的工具,它是一个开源项目,遵循GNU公共许可协议,运行的是Java字节码而不是源码. 它是一款静态分析工具,它检查类或者JAR ...