官方建议AFN的使用方法

1. 定义一个全局的AFHttpClient:包含有

1> baseURL

2> 请求

3> 操作队列 NSOperationQueue

2. 由AFHTTPRequestOperation负责所有的网络操作请求

3. 修改xxx-Prefix.pch文件

#import <MobileCoreServices/MobileCoreServices.h>

#import <SystemConfiguration/SystemConfiguration.h>

0.导入框架准备工作

•1. 将框架程序拖拽进项目

•2.  添加iOS框架引用

–SystemConfiguration.framework

–MobileCoreServices.framework

•3.  引入

#import "AFNetworking.h"

1.AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理

  1. 1 @interfaceViewController ()
  2. 2
  3. 3 {
  4. 4
  5. 5 // AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理
  6. 6
  7. 7 AFHTTPClient *_httpClient;
  8. 17 NSOperationQueue *_queue;
  9. 18
  10. 19 }
  1. 1 - (void)viewDidLoad
  2. 2 {
  3. 3 [super viewDidLoad];
  4. 4
  5. 5 NSURL *url = [NSURL URLWithString:@"http://192.168.3.255/~apple/qingche"];
  6. 6 _httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
  7. 7
  8. 8 _queue = [[NSOperationQueue alloc] init];
  9. 9 }

2.利用AFN实现文件上传操作细节

  1. 1 #pragma mark - 文件上传
  2. 2 - (IBAction)uploadImage
  3. 3 {
  4. 4 /*
  5. 5 此段代码如果需要修改,可以调整的位置
  6. 6
  7. 7 1. 把upload.php改成网站开发人员告知的地址
  8. 8 2. 把file改成网站开发人员告知的字段名
  9. 9 */
  10. 10 // 1. httpClient->url
  11. 11
  12. 12 // 2. 上传请求POST
  13. 13 NSURLRequest *request = [_httpClient multipartFormRequestWithMethod:@"POST" path:@"upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
  14. 14 // 在此位置生成一个要上传的数据体
  15. 15 // form对应的是html文件中的表单
  16. 16
  17. 17
  18. 18 UIImage *image = [UIImage imageNamed:@"头像1"];
  19. 19 NSData *data = UIImagePNGRepresentation(image);
  20. 20
  21. 21 // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
  22. 22 // 要解决此问题,
  23. 23 // 可以在上传时使用当前的系统事件作为文件名
  24. 24 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  25. 25 // 设置时间格式
  26. 26 formatter.dateFormat = @"yyyyMMddHHmmss";
  27. 27 NSString *str = [formatter stringFromDate:[NSDate date]];
  28. 28 NSString *fileName = [NSString stringWithFormat:@"%@.png", str];
  29. 29
  30. 30
  31. 31 /*
  32. 32 此方法参数
  33. 33 1. 要上传的[二进制数据]
  34. 34 2. 对应网站上[upload.php中]处理文件的[字段"file"]
  35. 35 3. 要保存在服务器上的[文件名]
  36. 36 4. 上传文件的[mimeType]
  37. 37 */
  38. 38 [formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"image/png"];
  39. 39 }];
  40. 40
  41. 41 // 3. operation包装的urlconnetion
  42. 42 AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
  43. 43
  44. 44 [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
  45. 45 NSLog(@"上传完成");
  46. 46 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  47. 47 NSLog(@"上传失败->%@", error);
  48. 48 }];
  49. 49
  50. 50 //执行
  51. 51 [_httpClient.operationQueue addOperation:op];

iOS- 利用AFNetworking(AFN) - 实现图片上传的更多相关文章

  1. ASP利用xhEditor编辑器实现图片上传的功能。

    本人这几天在做一个软件,无意中用到xhEditor在线编辑器,这个编辑器虽然看着比较简单,但功能非常强大,大家可以去官网上查看,废话不说了. 这篇文件主要是实现在ASP环境中利用xhEditor编辑器 ...

  2. iOS利用AFNetworking(AFN) 实现图片上传

    1.上传图片以二进制流的形式上传 1 #pragma mark - 文件上传  2 - (IBAction)uploadImage  3 {  4     /*  5      此段代码如果需要修改, ...

  3. [Ting's笔记Day6]活用套件carrierwave gem:(1)在Rails实现图片上传功能

    carrierwave是一款经典的图片上传套件,本篇的目标是先在本地端(development)的rails项目试成功gem. (预计中集的进度会练习怎么利用Amazone S3架设图片上传Host, ...

  4. [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]

    简单的JSON的HTTP传输就不说了,看一个简单的DEMO吧. 主要明白parameters是所填参数,类型是字典型.我把这部分代码封装起来了,以便多次调用.也许写在一起更清楚点. #pragma m ...

  5. iOS- 利用AFNetworking(AFN) - 实现文件上传

    官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseURL 2> 请求 3> 操作队列 NSOperationQueue 2. 由AFHTT ...

  6. IOS开发-图片上传

    目前IOS端开发,图片上传到服务器分为两种,一种是直接上到服务器,一种是借助第三方储存(减少服务器压力). 一.直接上传到服务器 /** * 代码演示 */ //*******UIImagePNGRe ...

  7. 图片上传前 压缩,base64图片压缩 Exif.js处理ios拍照倒置等问题

    曾写过在前端把图片按比例压缩不失真上传服务器的前端和后台,可惜没有及时做总结保留代码,只记得js利用了base64位压缩和Exif.js进行图片处理,还有其中让我头疼的ios拍照上传后会倒置等诸多问题 ...

  8. AFNetworking网络请求与图片上传工具(POST)

    AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h> /** 成功Block */ typedef vo ...

  9. iOS 开发之路(WKWebView内嵌HTML5之图片上传) 五

    HTML5页面的图片上传功能在iOS端的实现. 首先,页面上用的是plupload组件,在wkwebview上存在两个坑需要修复才能正常使用. 问题:在webview上点击选择照片/相机拍摄,就会出现 ...

随机推荐

  1. 【转】Linux下XenServer管理工具安装

    转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...

  2. js对字符串函数之charAt()

    var str="012345"; 字符串下标的index从0开始: charAt(index)返回指定位置的字符如果index不在0-str.length之间,返回一个空字符串: ...

  3. python中列表的操作

    list1 = ['A' , 'B' , 'C'] list1[0] ; list1[-1] # 取第一个和最后一个元素 list1[ : ] ; list1[ : len(list1)] # 取所有 ...

  4. jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码

    原文链接:http://www.cnblogs.com/steed-zgf/archive/2012/02/03/2336984.html <!DOCTYPE html PUBLIC " ...

  5. iOS开发错误日志

    错误提示:fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platfor ...

  6. SqlHelper帮助类

    数据库连接字符串//Data Source=.;Initial Catalog=Test1;User Id=sa;Password=123456; public static class SqlHel ...

  7. 【转】Nginx+php-fpm+MySQL分离部署详解

    转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...

  8. hadoop工作流引擎之azkaban [转]

    介绍 Azkaban是twitter出的一个任务调度系统,操作比Oozie要简单很多而且非常直观,提供的功能比较简单.Azkaban以Flow为执行单元进行定时调度,Flow就是预定义好的由一个或多个 ...

  9. checkbox 赋值给js 变量

    var banuid =[];//定义一个数组            $('input[name="banuid[]"]:checked').each(function(){//遍 ...

  10. hdu 4628 Pieces

    http://acm.hdu.edu.cn/showproblem.php?pid=4628 状态压缩DP 时间复杂度应该是 16*(2^32) 但是运行时要远小于这个数 所以加一定剪枝就可以过 代码 ...