转:http://www.kaifazhe.com/ios_school/380067.html

官方建议AFN的使用方法

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

1> baseURL

2> 请求

3> 操作队列 NSOperationQueue

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

 

0.导入框架准备工作                                   

•1. 将框架程序拖拽进项目
•2.  添加iOS框架引用
–SystemConfiguration.framework
–MobileCoreServices.framework
•3.  引入

#import “AFNetworking.h”

4. 修改xxx-Prefix.pch文件

#import <MobileCoreServices/MobileCoreServices.h>

#import <SystemConfiguration/SystemConfiguration.h>

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

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

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

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

  

iOS-利用AFNetworking(AFN 1.x)-实现文件上传的更多相关文章

  1. AFNetworking之多图片-文件上传

    在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...

  2. .NetCore WebApi利用Swagger文档实现选择文件上传

    介绍 实现这个功能主要还是依赖过滤器 在Swagger中利用 IOperationFilter 操作来实现文件上传 与之前处理结合Idr4授权一样的处理方式,不同的是授权处理的是Security,而文 ...

  3. spring mvc利用MultipartResolver解析Multipart/form-data进行文件上传

    之前的表单数据都是文本数据,现记录:利用MultipartResolver进行文件上传. ①首先,需引入commons-fileUpload和commons-io jar包,pom.xml文件的坐标: ...

  4. 利用百度编辑器和IIS限制文件上传的大小

    1.百度编辑器的大小限制 针对不同的文件类型限制大小 例如图片是imageMaxSize ,依次类推 /* 前后端通信相关的配置,注释只允许使用多行方式 */ {     /* 上传图片配置项 */ ...

  5. iOS多线程与网络开发之小文件上传

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. /** 取得本地文件的MIMEType */ 2 - (void) getMIMEType { 3 // Socket 实现断点上传 4 5 //apa ...

  6. [PHP 作为iOS后台Json格式HTTP通信及文件上传的实现]

    1.数据库连接 configmysql.php <?php $q = mysql_connect("localhost:8889","root",&quo ...

  7. Java 利用Apache Commons Net 实现 FTP文件上传下载

    package woxingwosu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  8. 利用Django REST framework快速实现文件上传下载功能

    安装包 pip install Pillow 设置 首先在settings.py中定义MEDIA_ROOT与MEDIA_URL.例如: MEDIA_ROOT = os.path.join(BASE_D ...

  9. 利用Selenium实现图片文件上传的两种方式介绍

    在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...

随机推荐

  1. NET Framework 4 中的新 C# 功能

    http://msdn.microsoft.com/zh-cn/magazine/ff796223.aspx C# 编程语言自 2002 年初次发布以来已经有了极大的改善,可以帮助程序员编写更清晰易懂 ...

  2. linux源代码阅读笔记 八进制

    c语言中,众所周知,以0x开头的数是16进制数.例如 0x8FFF 然而较少使用的是八进制数.它以0开头.例如 01234

  3. PHP 性能分析与实验(二)——PHP 性能的微观分析

    [编者按]此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要点.本文就改变 P ...

  4. 李洪强iOS开发支付集成之微信支付

    iOS开发支付集成之微信支付 微信支付也是需要签名的,也跟支付宝一样,可以在客户端签名,也可以在后台签名(当然,为了安全还是推荐在服务器上做签名,逻辑也比较好理解). 1 - 集成前首先要看看文档 开 ...

  5. Python图片与其矩阵数据互相转换

    程序 # coding=gbk from PIL import Image import numpy as np # import scipy import matplotlib.pyplot as ...

  6. chm文件访问提示:已取消到该网页的导航

    chm文件访问提示:已取消到该网页的导航或不能链接网页 解决方案: 右击chm文件,选择:属性->解除锁定 ,再重新打开文件即可

  7. Linux 动画显示

    Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了.在这些大量的有用的命令和脚本中,你会发现有少部 分命令工具不那么有用的——如果你不愿意说是完全没用处的话.你 ...

  8. android从应用到驱动之—camera(2)---cameraHAL的实现

    本文是camera系列博客,上一篇是: android从应用到驱动之-camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这 ...

  9. IOS基础框架

    GameKit 为游戏提供网络功能:点对点互联和游戏中的语音交流 AddressBook 提供访问用户联系人信息的功能 AddressBookUI 提供一个用户界面,用于显示存储在地址簿中的联系人信息 ...

  10. NLP基本任务-nltk_data文本分割

    将文本分割为句子 nltk.sent_tokenize(text,language) text:需要分割的文本 language:语言种类 czech捷克语 danish丹麦语 dutch荷兰语 en ...