//封装一个工具类FileUploader

//FileUploader.h

#import

@interface FileUploader : NSObject

+(void) upLoadImage:(UIImage *) p_w_picpath completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;

@end

//FileUploader.m

#import"FileUploader.h"

@implementationFileUploader

+(void) upLoadImage:(UIImage *) p_w_picpath completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handle

{

NSString*path1 = [NSStringstringWithFormat:@"http://2.guansir.sinaapp.com/upload.php"];

NSURL *url = [NSURL URLWithString:path1];

NSData*data =UIImagePNGRepresentation(p_w_picpath);

NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";

//分界线 --AaB03x

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

//结束符 AaB03x--

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

//http body的字符串

NSMutableString*body=[[NSMutableStringalloc]init];

添加分界线,换行

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

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

[bodyappendFormat:@"Content-Disposition: form-data; name=\"img\"; filename=\"boris.png\"\r\n"];

//声明上传文件的格式

[bodyappendFormat:@"Content-Type: p_w_picpath/png\r\n\r\n"];

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

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

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

NSMutableData*myRequestData=[NSMutableDatadata];

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

[myRequestDataappendData:[bodydataUsingEncoding:NSUTF8StringEncoding]];

//将p_w_picpath的data加入

[myRequestData appendData:data];

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

[myRequestDataappendData:[enddataUsingEncoding:NSUTF8StringEncoding]];

//设置HTTPHeader中Content-Type的值

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

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

//设置HTTPHeader

[requestsetValue:contentforHTTPHeaderField:@"Content-Type"];

//设置Content-Length

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

//设置http body

[request setHTTPBody:myRequestData];

//http method

[request setHTTPMethod:@"POST"];

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

handle(response,data,connectionError);

}];

}

@end

//FileUploader类封装完成========================================================

//使用

[FileUploader upLoadImage:p_w_picpath completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

if(connectionError==nil)

{

if (data != nil) {

NSLog(@"%@",[[NSString alloc] initWithData:data encoding:4]);

NSError *error;

NSDictionary*dic = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:&error];

if (dic == nil) {

}else{

//如果有值的话将图片和所需要的参数更新到服务端,这里需要的是将图片和老师id传到服务端改教师头像

NSString *strImage = [NSString stringWithFormat:@"id=%d&imgHead=%@",self.teachId,dic[@"p_w_picpathUrl"]];

NSLog(@"strImage = %@",strImage);

NSData *data1 = [strImage dataUsingEncoding:4];

NSString *path = [NSString stringWithFormat:@"%@%@",HOST,TEACHER_UPDATE];

NSURL *url = [NSURL URLWithString:path];

NSMutableURLRequest*req = [NSMutableURLRequestrequestWithURL:url];

[req setHTTPMethod:@"POST"];

[req setHTTPBody:data1];

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

if (!connectionError) {

NSLog(@"更新成功= %@",[[NSString alloc]initWithData:data encoding:4]);

}else

{

NSLog(@"error = %@",connectionError);

}

}];

}

}

}

else

{

NSLog(@"error = %@",connectionError);

}

}];

ios 刷新头像_iOS上传图片到网上,并更新到服务器,常用在设置头像相关推荐

  1. ios 上传图片失败 小程序_iOS上传图片,就是有这种不一样的操作!

    很久没发文了,最近这段时间在看前端的东西,在忙微商城webapp的事,用的vue2.0开发,打算过段时间记录总结那方面的一些知识点和坑.下面进入今天的主题. 说到iOS上传图片,网上的资料满满皆是,分 ...

  2. ios 裁剪圆形头像_iOS开发笔记:实现圆形头像

    初学iOS,记录一下自己遇到的一些问题,也希望能够对别人有所帮助 一般应用的个人头像如上图,圆形头像算是每款App中最常见的东西了,刚好最近有遇到这个问题,并且顺利解决了,其实很简单,调用layer这 ...

  3. ios 刷新头像_想请问各位大大,iOS中新旧头像缓存的策略是什么?如微信,每次更换个人头像后,服务器怎么处理新旧头像?...

    新旧头像如何处理,需要考虑服务端和客户端两个方面. 通常大公司会将文件上传做成基础服务,跟特定的应用无关.假设这里,文件上传为服务 A, 特定的应用为服务 B,客户端为 C.这时候替换头像大致有两种做 ...

  4. ios 刷新遮罩遮罩_在Adobe XD中进行遮罩的3种方法

    ios 刷新遮罩遮罩 Are you new to Adobe XD? Or maybe you're just stuck on how to create a simple mask? Here ...

  5. ios 上传图片失败 小程序_微信小程序ios端 使用ajaxSubmit上传图片失败,android没问题...

    微信小程序ios端 使用ajaxSubmit上传图片失败,android没问题 微信小程序开发上传图片,使用ajaxsubmit,post请求,form设置multipart/form-data, a ...

  6. iOS通过http post上传图片, 文件等

    原文地址为: iOS通过http post上传图片, 文件等 在http网络请求中,post没有请求长度的限制,因为post把数据放在了body中,而不是像Get一样放在了浏览器的地址栏中(可以这么理 ...

  7. ios超级签名_ios超级签名多少钱?决定超级签名价格的因素有哪些

    ios超级签名是苹果签名中一种应用广泛的签名方式,有不少开发者和运营商一直都在选择超级签名来进行APP应用的内测分发.ios超级签名的原理机制其实是运用苹果的个人开发者账号生成的具有100台真机测试的 ...

  8. ios虚拟机运行速度_iOS 8的采用速度减慢至虚拟停止

    ios虚拟机运行速度 In the latest update statistics released by Apple, it is pretty clear that people have st ...

  9. android中华为、小米手机设置头像裁剪失败问题

    近期写代码碰到华为.小米手机拍照.从相册获取图片设置头像失败的问题,在网上浏览一些相关博客后,终于解决了此问题,特在此记录,分享给大家,也算是自己的一个笔记了! 问题原因:裁剪时 return-dat ...

最新文章

  1. html如何呈现在显示器,lcd显示器采用什么显示方式
  2. Oracle海量数据优化-01分区的渊源
  3. django-vue-admin脚手架快速开发CRUD教程
  4. 新手学Python, 如何从入门到入土变为从入门到快速上车?
  5. 解决Error: Protected multilib versions:
  6. 三星官方回应“7nm EUV良率”:内容与事实完全不符
  7. 微课|中学生可以这样学Python(5.6.1节):列表推导式2
  8. HDU 1176 免费馅饼(记忆化搜索)
  9. html代码放进json数据,用json数据填充html表
  10. [No00005A]word多文档合一
  11. Django下的templates 和 static静态文件
  12. 2016年第七届(C/C++)B组蓝桥国赛题
  13. VM 网络设置 for xp3
  14. Object slicing(对象切片)
  15. STM32连接WIFI-ESP8266获取天气信息---STA模式运用
  16. java短信发送接口开发
  17. 0/0型极限等于多少_有限个极限运算及常见错误小结
  18. 计算机专业论文谢辞,计算机专业论文致谢信.docx
  19. 线程池、volatile、原子性、并发工具类
  20. 译文Deep Learning in Bioinformatics --深度学习在生物信息学领域的应用(1)

热门文章

  1. java 字符串编程题,JAVA 基础编程练习题7 【程序 7 处理字符串】
  2. SVN 服务器发送了意外的返回值(405 Method Not Allowed),在响应 “MKCOL” 的请求
  3. c++ cuda拷贝内存
  4. CVPR 2021 | 微软提出“解构式关键点回归“, 刷新COCO自底向上多人姿态检测记录!
  5. Android Studio编译问题-Error:Could not find org.jetbrains.trove4j
  6. argparse subparsers()
  7. retinaface人脸对齐
  8. nn.Upsampling is deprecated. Use nn.functional.interpolate instead.
  9. Qt编写OpenMP程序--循环测试
  10. python ffmpeg pyav